HTTP 상태코드

민선규·2023년 7월 6일
0

네트워크

목록 보기
13/16
post-thumbnail

상태코드

상태코드는 HTTP 응답 메세지 request-line에 들어가는 데이터로 전체적인 범위는

1xx(Informational) : 요청 처리 중
2xx(Successful) : 요청 정상 처리
3xx(Redirection) : 요청을 완료하려면 추가 행동이 필요
4xx(Client Error) : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
5xx(Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함

이다. 만약 클라이언트가 인식할 수 없는 상태코드가 온다면 상위 상태코드로 해석을 한다. 예시로 287이 온다면 상위 상태코드인 200으로 정상 처리로 처리를 한다. 100 ~ 상태 코드를 제외한 나머지 상태 코드에 대해 자세히 정리를 해보았다.

2xx

  • 200 OK
    요청을 성공하였을 때 반환되는 상태코드이다.
  • 201 Created
    요청을 성공하여 새로운 리소스가 생성되었을 때 반환되는 상태코드이다. 생성된 리소스는 Location 헤더 필드로 식별이 가능하다.
  • 202 Accepted
    요청은 접수 되었으나 처리가 완료되지 않았을 때 반환되는 상태코드이다. 주로 배치 처리에 사용이 된다.
  • 204 No Content
    요청은 성공하였으나 응답 페이로드 본문에 보낼 데이터가 없을 때 반환되는 상태코드이다.

3xx

3xx 응답의 결과에 Location 헤더가 존재하면, Location 위치로 자동 이동한다 이를 리다이렉션이라 부르는데 리다이렉션에는 3가지 종류가 있다.

영구 리다이렉션 -

  • 특정 리소스의 URI가 영구적으로 이동한다 따라서 원래의 URL을 사용하지 않는다. 검색 엔진 등 에서도 변경을 감지한다.
  • 301 Moved Permanently
    리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거될 수도 있다.
  • 308 Permanent Redirect
    리다이렉트 시 요청 메서드와 본문이 유지된다.

일시 리다이렉션 - 일시적인 변경

  • 리소스의 URI가 일시적으로 변경한다. 따라서 검색 엔진 등에서 URL을 변경하면 안된다.
  • 302 Found
    리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거될 수도 있다.
  • 303 See Other
    리다이렉트 시 요청 메서드가 GET으로 변한다.
  • 307 Temporary Redirect
    리다이렉트 시 요청 메서드와 본문이 유지된다.

특수 리다이렉션 - 결과 대신 캐시를 사용

  • 304 Not Modified
    캐시를 목적으로 사용되며, 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 클라이언트는 이 상태코드를 받으면 저장된 캐시를 재사용한다. 304 응답은 응답에 메시지 바디를 포함하지 않는다.

PRG: Post/Redirect/Get

POST 요청으로 리소스가 변경이 일어났을 때 새로고침을 하는 경우 POST 요청이 재 전송될 수 있으며 이는 문제를 일으킬 수 도 있다. 이를 방지하기 위해서 POST 요청 시 리다이렉트 상태 코드를 넘겨 클라이언트에서 GET 요청을 하게끔 설계할 수 있다. 이렇게 된다면 새로고침을 하더라도 GET 요청이 재 전송이 되므로 해결할 수 있다.

4xx

  • 400 Bad Request
    클라이언트가 잘못된 요청을 했을 때 서버가 요청을 처리할 수 없어 반환하는 상태코드이다.
  • 401 Unauthorized
    클라이언트의 인증이 되지 않았을 때 반환하는 상태코드이다. 401 오류 발생시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명한다.
  • 403 Forbidden
    클라이언트의 인가가 되지 않았을 때 반환하는 상태코드이다. 주로 인증은 되었으나 권한이 부족한 경우에 발생한다.
  • 404 Not Found
    요청 리소스를 찾을 수 없을 때 반환하는 상태코드이다. 또는 클라이언트에게 권한이 부족한 리소스에 접근할 때 권한 자체를 숨기고 싶을 때 사용한다.

5xx

  • 500 Internal Server Error
    서버 내부 문제로 오류가 발생했을 때 반환하는 상태코드이다.
  • 503 Service Unavailable
    서버가 일시적인 과부화 또는 업데이트 작업 중 일 때 동안 반환하는 상태코드이다. 이 문제는 주로 일시적이며 Retry-After 헤더 필드를 통해 복구 예정시간을 알릴 수 있다.

참고 문서 및 링크

  • 모든 개발자를 위한 HTTP 웹 기본 지식

0개의 댓글