Study/Network

HTTP 상태코드 정리

ujam 2021. 8. 6. 22:15
728x90
반응형
  • 정보 상태 코드 (100 - 199) 100, 101
  • Success 상태 코드 (200 - 299) 200, 201, 202, 203, 204, 205, 206
  • Redirection 상태 코드 (300 - 399) 300, 301, 302, 303, 304, 305, 306, 307
  • Client Error 상태 코드 (400 - 499) 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 410, 411, 412, 413, 414
  • Server Error 상태 코드 (500 - 599) 500, 501, 502, 503, 504, 505, 511

 

 

정보 상태 코드 (100 - 199)

100 - Continue

  • 요청에 대한 시작부분 일부를 받았으며, Client는 나머지를 계속 이어서 보내야 함을 의미
  • 이것을 보낸 후 Server는 반드시 요청을 받아 응답해야 한다.

 

 

101 - switching protocols

  • 클라이언트가 upgrade 헤더에 나열한 것 중 하나로 서버가 프로토콜을 바꾸었음을 의미한다.
  • 웹 소켓과 함께 사용될 수 있다.

 

Success 상태 코드 (200 - 299)

 

201 - Created

  • 서버 개체를 생성하라는 요청을 위한 것 (PUT)
  • 서버는 반드시 객체를 생성하고 해당코드로 응답해야 한다.

 

202 - Accepted

  • 요청은 받아들여졌으나, 서버는 아직 그에 대한 어떤 동작도 수행하지 않았다.
  • 서버가 요청의 처리를 완료할 것인지에 대한 어떤 보장도 없다.
    요청을 받아들이기에 적법해 보인다는 의미이다.

 

203 - Non-Authoritative Information

  • 엔터티 헤더에 들어있는 정보가 원래 서버가 아닌 리소스의 사본에서 왔다.(?)
  • 프록시가 리소스의 사본을 갖고 있었지만
    리소스에 대한 메타 정보(헤더)를 검증하지 못한(혹은 안 한) 경우 이런 일이 발생할 수 있다.
  • 요청이 성공했지만 페이로드가 원본 서버의 200(OK) 응답의 변환 프록시에 의해 수정되었음을 나타낸다.

204 - No Content

  • 응답메세지에서 헤더와 상태줄은 있지만, 엔터티 본문은 없다.
  • 204 응답은 기본적으로 캐시할 수 있다. 그러한 반응에는 ETag 헤더가 포함된다.
 

205 - Reset Content

  • 브라우저를 위해 사용되는 코드
  • 브라우저에게 현재 페이지에 있는 HTML 폼에 채워진 모든 값을 비우거나,
    캔버스 상태를 재설정하거나,
    UI를 새로 고치도록 지시한다.

206 - Partial Content

  • 부분 혹은 범위 요청이 성공했다.
  • 나중에 우리는 클라가 특별한 헤더를 사용해서 문서의 부분 혹은 특정 범위를 요청할 수 있다는 것을 보게 될 것이다.
  • 이 상태 코드는 범위 요청이 성공했음을 의미한다.

 

Redirection 상태 코드 (300 - 399)

 

300 - Multiple Choices

  • 클라이언트가 동시에 여러 리소스를 가리키는 URL을 요청한 경우, 그 리소스의 목록과 함께 반환된다.
  • 요청에 둘 이상의 가능한 응답이 있음을 나타낸다.
 

301 - Moved Permanently

  • 요청된 리소스가 Location 헤더가 지정한 URL로 확실하게 이동되었음을 나타낸다.
  • 브라우저는 이 페이지로 리디렉션 되고 검색 엔진은 그들의 자원 링크를 업데이트한다

302 - Found

  • 요청된 리소스가 Location 헤더가 지정한 URL로 일시적으로 이동되었음을 나타낸다.
  • 브라우저는 이 페이지로 리디렉션 되지만 검색 엔진은 리소스에 대한 링크를 업데이트하지 않는다.

303 - See Other

  • 클라에게 리소스를 다른 URL에서 가져와야 한다고 말해주고자 할 때 쓰인다.
  • 새 URL은 응답메세지의 Location 헤더에 들어있다.
  • 이 코드의 목적은 POST 요청에 대한 응답으로 클라에게 리소스의 위치를 알려주는 것.

304 - Not Modified

  • 클라는 헤더를 이용해 조건부 요청을 만들 수 있다.
  • 만약 클라가 GET과 같은 조건부 요청을 보냈고,
    그 요청한 리소스가 최근에 수정된 일이 없다면, 이 코드는 리소스가 수정되지 않았음을 의미하게 된다.

307 - Temporary Redirect

  • Location 헤더로 주어진 URL을 리소스를 임시로 가리키기 위한 목적으로 사용해야 한다.

 

 

Client Error 상태 코드 (400 - 499)

 

400 - Bad Request

  • 클라이언트가 잘못된 요청을 보냈다고 말해준다.

401 - Unauthorized

  • 리소스를 얻기 전에 클라에게 스스로 인증하라고 요구하는 내용의 응답을 적절한 헤더와 함께 반환한다.

402 - Payment Required

  • 이 상태 코드는 쓰이지 않지만, 미래에 사용될 수도 있어서 미리 준비해둔 비표준 응답 코드

403 - Forbidden

  • 요청이 서버에 의해 거부되었음을 알려주기 위해 사용된다.
  • 왜 요청이 거부되었는지 서버가 알려주고자 한다면,
    그 이유를 설명하는 엔터니 본문을 포함시킬 수 있다.

404 - Not Found

  • 서버가 요청한 URL을 찾을 수 없음을 알려주기 위해 사용한다.
  • 404 페이지를 띄우는 링크는 대체로 브로큰 링크(broken link) 또는 데드 링크(dead link)라고 부르며, link rot 대상일 수도 있습니다.

405 - Method Not Allowed

  • 요청 URL에 대해, 지원하지 않은 메서드로 요청받았을 때 사용한다.
  • 요청한 리소스에 대해 어떤 메서드가 사용 가능한지 클라에게 알려주기 위해,
    요청에 Allow 헤더가 포함되어야 한다.

406 - Not Acceptable

  • 클라는 자신이 어떤 종류의 엔터티를 받아들이고자 하는지에 대해 매개변수로 명시할 수 있다.
  • 주어진 URL에 대한 리소스 중 클라가 받아들일 수 있는 것이 없는 겨우 사용한다.

407 - Proxy Authentication Required

  • 401 상태코드와 같으나, 리소스에 대해 인증을 요구하는 프락시 서버를 위해 사용한다.

408 - Request Timeout

  • 클라의 요청을 완수하기에 시간이 너무 많이 걸리는 경우, 서버는 이 상태 코드로 응답하고 연결을 끊을 수 있다.

409 - Conflict

  • 요청이 리소스에 대해 일으킬 수 있는 몇몇 충돌을 지칭하기 위해 사용한다.
  • 서버는 요청이 충돌을 일으킬 염려가 있다고 생각될 때 이 요청을 보낼 수 있다.

410 - Gone

  • 404와 비슷하나, 서버가 한때 그 리소스를 갖고 있었다는 점이 다르다.
  • 주로 웹사이트를 유지보수 하면서, 서버 관리자가 클라에게 리소스가 제거된 경우 이를 알려주기 위해 사용한다.
  • 캐시 가능하다.

411 - Length Required

  • 서버 요청 메시지에 Content-Length 헤더가 있을 것을 요구할 때 사용한다.
  • 클라가 서버에 청크 데이터를 보낼때, 서버가 청크 인코딩을 받아들여주지 않을 경우에도 411 Length Required가 내려온다.

412 - Precondition Failed

  • 클라가 조건부 요청을 했는데, 그중 하나가 실패했을 때 사용한다.
  • 조건부 요청은 클라가 Expect 헤더를 포함했을 때 발생한다.
  • 대상 리소스에 대한 액세스가 거부되었음을 나타낸다.

413 - Payload Too Large (Request Entity Too Large)

  • 서버가 처리할 수 있는 혹은 처리하고자 하는 한계를 넘은 크기의 요청을 클라가 보냈을 때 사용한다.
  • 서버가 연결을 닫거나 헤더 필드(Retry-After)를 반환할 수 있다.

414 - URI Too Long (Request URI Too Long)

  • 서버가 처리할 수 있는 혹은 처리하고자 하는 한계를 넘은 길이의 요청 URL이 포함된 요청을 클라가 보냈을 때 사용한다.

 

 

Server Error 상태 코드 (500 - 599)

 

500 - Internal Server Error

  • 서버가 요청을 처리할 수 없게 만드는 에러를 만났을 때 사용한다.

501 - Not Implemented

  • 클라가 서버의 능력을 넘은 요청을 했을 때 사용한다.
  • 예 서버가 지원하지 않는 메서드를 사용

502 - Bad Gateway

  • 프락시나 게이트웨이처럼 행동하는 서버가
    그 요청 응답 연쇄에 있는 다음 링크로부터
    가짜 응답에 맞닥뜨렸을 때 사용한다.

503 - Service Unavailable

  • 서버가 요청을 처리해 줄 수 없지만, 나중에 가능함을 의미하고자 할대 사용한다.
  • 서버가 언제 그 리소스를 사용할 수 있게 될지 알고 있다면, 서버는 Retry-After 헤더를 응답에 포함시킬 수 있다.

504 - Gateway Timeout

  • 408과 비슷하지만,
    다른 서버에게 요청을 보내고 응답을 기다리다
    타임아웃이 발생한 게이트웨이나 프락시에서 온 응답이라는 점이 다르다.

505 - HTTP Version Not Supported

  • 서버가 지원할 수 없거나, 지원하지 않으려고 하는 버전의 프로토콜로 된 요청을 받았을 때 사용한다
  • 몇몇 서버 어플리케이션들은 오래된 버전의 프로토콜을 지원하지 않는 것을 택한다.

511 - Network Authentication Required

  • 클라이언트가 네트워크 액세스를 얻으려면 인증이 필요하다는 것을 나타낸다.
  • 이 상태는 원 서버에서 생성되는 것이 아니라
    네트워크에 대한 액세스를 제어하는 프록시를 가로채서 생성된다.

 

 

 

 

 

  • 참고
 

HTTP 메세지 - 상태코드

출처: http-decision-diagram http 응답에, 어떤 상황에 해당 상태코드가 반환되는지를 보여주는 시각화 다이어그램 자료이다. 상태코드와 사유구절 클라이언트에게 그들의 트랜잭션을 이해할 수 있는

feel5ny.github.io

 

728x90
반응형

'Study > Network' 카테고리의 다른 글

프록시(Proxy)란?  (0) 2021.09.14
OSI 7계층이란?  (0) 2021.08.26
TCP 3-way handshake와 4-way handshake 란?  (0) 2021.08.05
REST API란? 특징 및 규칙 그리고 장단점  (0) 2021.08.04
HTTP와 HTTPS 차이점  (0) 2021.08.01