TIL#47 HTTP Status Code

luneah·2021년 12월 11일
0

Developer

목록 보기
10/16
post-thumbnail

HTTP 상태 코드

HTTP 상태 코드는 세 자리 숫자로 만들어져 있으며, 첫번째 자리는 1에서 5까지 제공된다. 첫번째 자리가 4와 5인 경우는 정상적인 상황이 아니기 때문에 사이트 관리자가 즉시 알아야 하는 정보이다.

  • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행함
  • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용함
  • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요함
  • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
  • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패함

1XX : Information responses

  • 100 Continue
    진행 중, 현재까지의 진행상태에 문제가 없고 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려준다.

  • 101 Switching Protocol
    클라이언트가 보낸 Upgrade 요청 헤더에 대한 응답에 들어가며, 서버에서 프로토콜을 변경할 것임을 알려준다.
    101은 클라이언트에 의해 보낸 업그레이드 요청 헤더에 대한 응답으로 보내진다. 해당 코드는 Websocket 프로토콜 전환 시에 사용된다.

  • 102 Processing(WebDAV)
    서버가 요청을 수신하였으며 이를 처리하고 있지만, 아직 제대로 된 응답을 알려줄 수 없음을 알려준다.

2XX : Successful responses

  • 200 OK
    요청이 성공적으로 되었음을 알려준다. 정보는 요청에 따른 응답으로 반환된다.

  • 201 Created
    요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었다. 이 응답은 일반적으로 POST 요청 또는 일부 PUT 요청 이후에 따라온다.

  • 202 Accepted
    요청을 수신하였지만, 그에 응하여 행동할 수 없다. 이 응답은 요청 처리에 대한 결과를 이후에 HTTP로 비동기 응답을 보내는 것에 대해서 명확하게 명시하지 않는다. 이것은 다른 프로세스에서 처리 또는 서버가 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 만들어졌다.

  • 203 Non-Authoritative Information
    돌려받은 메타 정보 세트가 오리진 서버의 것과 일치하지 않지만 로컬이나 서드 파티 복사본에서 모아졌음을 의미한다. 이러한 조건에서는 이 응답이 아니라 200 OK 응답을 반드시 우선으로 한다.

  • 204 No Content
    요청에 대해서 보내줄 수 있는 콘텐츠가 없지만, 헤더는 의미있을 수 있다. 사용자-에이전트는 리소스가 캐시된 헤더를 새로운 것으로 업데이트 할 수 있다.

  • 205 Reset Content
    요청을 완수한 이후에 사용자 에이전트에게 이 요청을 보낸 문서 뷰를 리셋하라고 알려준다.

  • 206 Partial Content
    클라이언트에서 복수의 스트림을 분할 다운로드를 하고자 범위 헤더를 전송했기 때문에 사용된다. 클라이언트가 이어받기를 시도하면 웹서버가 이에 대한 응답코드로 '206 Partial Content'와 함께 Range 헤더에 명시된 데이터의 부분(byte)부터 전송을 시작한다.

  • 207 Multi-Status
    여러 리소스가 여러 상태 코드인 상황이 적절한 경우에 해당되는 정보를 전달한다. 해당 코드는 WebDAV(Web Distributed Authoring and Vesioning)에 사용된다.

  • 208 Already Reported
    Prostat(property와 status의 합성어) 응답 속성으로 동일 컬렉션으로 바인드된 복수의 내부 멤버를 반복적으로 열거하는 것을 피하기 위해 사용된다. 해당 코드는 WebDAV(Web Distributed Authoring and Vesioning)에 사용된다.

  • 226 IM Used ( HTTP Delta encoding )
    서버가 GET 요청에 대한 리소스의 의무를 다 했고, 그리고 응답이 하나 또는 그 이상의 인스턴스 조작이 현재 인스턴스에 적용이 되었음을 알려준다.

3XX : Redirection messages

  • 300 Multiple Choice
    요청에 대해서 하나 이상의 응답이 가능하다는 의미이다. 사용자 에언트 또는 사용자는 그중에 하나를 반드시 선택해야 한다. 응답 중 하나를 선택하는 방법에 대한 표준화 된 방법은 존재하지 않는다.

  • 301 Moved Permanently
    요청한 리소스의 URI가 변경되었음을 의미한다. 새로운 URI가 응답에서 주어질 수도 있다.

  • 302 Found
    요청한 리소스의 URI가 일시적으로 변경되었음을 의미한다. 새롭게 변경된 URI는 나중에 만들어질 수 있다. 그러므로, 클라이언트는 향후의 요청도 반드시 동일한 URI로 해야한다.

  • 303 See Other
    클라이언트가 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답이다.

  • 304 Not Modified
    캐시를 목적으로 사용된다. 이것은 클라이언트에게 응답이 수정되지 않았음을 알려주며, 그러므로 클라이언트는 계속해서 응답의 캐시된 버전을 사용할 수 있다.

4XX : Client error responses

  • 400 Bad Request
    잘못된 문법으로 인하여 서버가 요청하여 이해할 수 없음을 의미한다.

  • 401 Unauthorized
    비록 HTTP 표준에서는 '미승인(unauthorized)'를 명확히 하고 있지만, 의미상 이 응답은 '비인증(unauthenticated)'를 의미한다. 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 한다.

  • 403 Forbidden
    클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않으므로 서버는 거절을 위한 적절한 응답을 보낸다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있다는 점이다.

  • 404 Not Found
    서버는 요청받은 리소스를 찾을 수 없다. 브라우저에서는 알려지지 않은 URL을 의미한다. 이것은 API에서 종점은 적절하지만 리소스 자체는 존재하지 않음을 의미할 수 있다. 서버들은 인증받지 않은 클라이언트로부터 리소스를 숨기기 위하여 이 응답을 403 대신에 전송할 수도 있다.

  • 405 Method Not Allowed
    요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없다. 예를 들어, 어떤 API에서 리소스를 삭제하는 것을 금지할 수 있다. 그러나 필수적인 메소드인 GET과 HEAD는 제거될 수 없으며, 이 에러 코드를 리턴할 수 없다.

  • 406 Not Acceptable
    서버가 서버 주도 콘텐츠 협상을 수행한 후, 사용자 에이전트에서 정해준 규격에 따른 어떠한 콘텐츠도 찾지 않았을 때, 웹서버가 보낸다.

  • 407 Proxy Authentication Required
    이것은 401과 비슷하지만 프록시에 의해 완료된 인증이 필요하다.

  • 408 Request Timeout
    요청을 한 지 시간이 오래된 연결에 일부 서버가 전송하며, 어떤 때에는 이전에 클라이언트로부터 어떠한 요청이 없었다고 하더라도 보내지기도 한다. 이것은 서버가 사용되지 않는 연결을 끊고 싶어하는 것을 의미한다.

    이 응답은 특정 몇몇 브라우저에서 빈번하게 보이는데 Chrome, Firefox 27+, 또는 IE 9와 같은 웹서핑 속도를 올리기 위해 HTTP 사전 연결 메카니즘을 사용하는 브라우저들이 해당된다. 또한 일부 서버는 이 메시지를 보내지 않고 연결을 끊어버리기도 한다.

  • 409 Conflict
    요청이 현재 서버의 상태와 충돌될 때 보낸다.

5XX : Server error reponses

  • 500 Internal Server Error
    웹 사이트 서버에 문제가 있음을 의미하지만 서버는 정확한 문제에 대해 더 구체적으로 설명할 수 없다.

  • 501 Not Implemented
    서버가 요청을 이행하는 데 필요한 기능을 지원하지 않음을 나타낸다.

  • 502 Bad Gateway
    서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미한다. 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우 발생한다.

  • 503 Service Unavailable
    서버가 요청을 처리할 준비가 되지 않았다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸린 서버이다. 이 응답과 함께 문제를 설명하는 사용자 친화적인 페이지가 전송되어야 한다는 점에 유의해야 한다.

    이 응답은 임시 조건에 사용되어야 하며, Retry-After: HTTP 헤더는 가능하면 서비스를 복구하기 전 예상 시간을 포함해야 한다. 웹마스터는 또한 이러한 일시적인 조건 응답을 캐시하지 않아야 하므로 이 응답과 함께 전송되는 캐싱 관련 헤더에 대해서도 주의해야 한다.

  • 504 Gateway Timeout
    웹페이지를 로드하거나 브라우저에서 다른 요청을 채우려는 동안 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미한다.

    이 오류 응답은 서버가 게이트웨이 역할을 하고 있으며 적시에 응답을 받을 수 없을 경우 주어진다. 이 오류는 대게 인터넷상의 서버 간의 네트워크 오류이거나 실제 서버의 문제이다.

  • 505 HTTP Version Not Supported
    서버에서 지원되지 않는 HTTP 버전을 클라이언트가 요청했다는 의미이다. 대부분의 웹 브라우저는 웹 서버가 1.x 버전의 HTTP 프로토콜을 지원한다고 가정한다. 웹 브라우저에서 이 오류가 표시되는 경우 웹 서버 소프트웨어에서 지원하는 HTTP 버전을 확인해 보아야 한다.

profile
하늘이의 개발 일기

0개의 댓글