HTTP 상태코드

현재 진행중인 프로젝트를 하다가 에러페이지를 다루는 과정에서 한 번 정리해볼 필요가 있을것 같아서 작성하게되었다.

ToC

1xx
2xx
3xx
4xx
5xx



1xx - 정보응답 (Information Responses)

  • 100 : Continue

    • 진행중임을 나타내는 응답코드이며, 지금까지 상태가 OK임을 의미.
    • 클라이언트가 계속 요청하거나 이미 요청을 완료한 경우에 무시해도 되는 것을 알려준다.
  • 101 : Switching Protocol

    • 클라이언트가 보낸 업그레이드 요청 헤더에 대한 응답으로 보내진다.
    • 서버에서 프로토콜을 변경할 것임을 알려준다.
  • 102 : Processing (WebDAV)

    • 서버가 요청을 수신하였으며 이를 처리하고 있지만, 아직 제대로된 응답을 알려줄 수 없는 상태임을 알려준다.

2xx - 성공응답 (Successful Responses)

  • 200 : OK

    • 요청이 성공적으로 되었음을 나타내는 응답코드. HTTP 메서드에 따라 무엇을 성공했는지 의미가 달라진다.
      • GET : 리소스를 불러와서 메세지 바디에 전송
      • HEAD : 개체 헤더가 메세지 바디에 존재
      • PUT or POST : 수행 결과에 대한 리소스가 메세지 바디에 전송
      • TRACE : 메세지 바디는 서버에서 수신한 요청 메세지를 포함
  • 201 : Created

    • 요청이 성공적이었으며, 그 결과로 새로운 리소스가 생성.
    • 일반적으로 POST 요청 또는 일부 PUT 요청 이후에 따라온다.
  • 202 : Accepted

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

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

3xx - 리다이렉션 메시지 (Redirection Message)

  • 301 : Moved Permanently

    • 이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미한다.
    • 새로운 URI가 응답에서 주어질 수 있다.
  • 302 : Found

    • 클라이언트가 요청한 리소스가 헤더에 주어진 URL로 일시적으로 이동되었음을 가리키는 상태코드이다.
    • 301과 다른 점은 302 상태코드는 검색엔진에서 페이지랭킹 또는 링크에 대한 점수를 새로운 URL로 옮기지 않고, 기존의 URL을 그대로 유지한다는 점이다. 즉 기존의 URL로 페이지랭킹 점수를 유지하면서도 컨텐츠만 새로운 URL에서 조회되도록 할 때 302 리다이렉트를 사용할 수 있다.
    • 참고 포스트
  • 304 : Not Modified

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

4xx - 클라이언트 에러응답(Client Error Responses)

  • 400 : Bad Request

    • 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미한다.
    • 따라서 서버가 클라이언트가 누구인지를 모르는 상태이다.
  • 401 : Unauthorized

    • 비인증(unauthorized)을 의미한다. 클라이언트는 요청한 응답을 받기 위해서 반드시 스스로를 인증해야한다.
  • 403 : Forbidden

    • 클라이언트가 컨텐츠에 접근할 권리가 없음을 의미한다.
    • 401과 다른 점은 서버가 클라이언트가 누구인지는 알고 있다는 점이다.
  • 404 : Not Found

    • 서버는 요청받은 리소스를 찾을 수 없다.
    • 브라우저에서 알려지지 않은 URL을 의미한다.
    • 서버는 인증받지 않은 클라이언트로부터 리소스를 숨기기위하여 403대신 404을 응답할 수도 있다.
  • 405 : Method Not Allowed

    • 요청한 메서드는 서버에서 알고있지만, 제거되어서 더이상 사용할 수 없음을 의미한다.
    • 필수적인 메서드인 GETHEAD는 제거될 수 없으며 이 에러 코드를 리턴할 수 없다.
  • 406 : Not Acceptable

    • 이 응답은 서버가 서버 주도 컨텐츠 협상을 수행한 이후, 사용자 에이전트에서 정해준 규격에 따른 어떠한 컨텐츠도 찾지 않았을때, 웹서버가 보낸다.
  • 409 : Conflict

    • 요청이 현재 서버의 상태와 충돌될 때 보내진다.
  • 429 : Too Many Requests

    • 사용자가 지정된 시간에 너무 많은 요청을 보냈을 때 응답된다.

5xx - 서버 에러응답 (Server Error Responses)

  • 500 : Internal Server Error

    • 서버가 처리방법을 모르는 상황을 의미한다.
  • 502 : Not Implemented

    • 서버에서 지원되지 않아서 처리할 수 없는 상태이다.
    • 서버가 지원해야 하는 유일한 방법은 GETHEAD이다.
    • 이 코드는 반환하면 안된다.
  • 503 : Service Unavailable

    • 서버가 요청을 처리할 준비가 되지 않았을 때 응답된다.
    • 일반적으로 유지보수를 위해 서버 작동이 중단되거나 과부하가 걸렸을때 응답된다.
    • 이 때는 사용자 친화적인 페이지를 전송시켜서 어떠한 이유로 503 상태인지를 설명해야한다.
    • 이 응답은 임시조건에 사용되어야 하며, 일시적인 조건 응답을 캐시하지 않아야 하므로 이 응답과 함께 전송되는 캐싱 관련 헤더에 대해서도 주의해야한다.
  • 504 : Gateway Timeout

    • 이 오류 응답은 서버가 게이트웨이 역할을 하고 있으며 적시에 응답을 받을 수 없을때 주어진다.


References