본문 바로가기
WEB/HTTP

HTTP 상태코드의 종류와 의미

by 정권이 내 2023. 5. 17.

HTTP 상태코드 (1xx, 2xx, 3xx, 4xx, 5xx) 의미

 

HTTP 상태코드 종류

HTTP의 상태코드란 클라이언트가 보낸 요청에 대해 처리 상태를 알려주는 기능입니다. 상태코드는 크게 5가지 타입이 존재하며 각 타입은 다음과 같은 의미를 가지고 있습니다.

  • 1xx(정보): 서버가 요청을 수신했으며 계속 처리 중임을 나타내는 중간 응답입니다.
  • 2xx(성공): 클라이언트의 요청이 성공했음을 나타냅니다.
  • 3xx(리디렉션): 클라이언트가 요청을 완료하기 위해 리디렉션과 같은 추가 작업을 수행해야 함을 나타냅니다.
  • 4xx(클라이언트 오류): 누락되거나 잘못된 매개변수와 같은 클라이언트 요청으로 오류가 있음을 나타냅니다.
  • 5xx(서버 오류): 요청을 처리하는 동안 서버 측에서 오류가 발생했음을 나타냅니다.

 

만약 기존에 정의된 상태코드외에 클라이언트가 서버로부터 새로운 상태코드를 받게된다면 클라이언트는 상위 상태코드로 해석하므로 클라이언트는 변경할 필요가 없습니다.

예를들어 정의되지않은 상태코드 299를 클라이언트가 받게되면 상위 상태코드인 2xx로 해석하여 성공(Successful) 상태로 처리합니다. 하지만 클라이언트가 응답을 제대로 해석하고 처리할수 있도록 정의된 HTTP 상태코드만 사용하는것이 좋습니다.

 

HTTP 상태코드 1xx (Information)

  • 1xx 상태코드는 클라이언트의 요청을 처리중임을 나타내는 상태코드입니다. 실제로는 거의 사용할일이 없습니다.

 

HTTP 상태코드 2xx (Successful)

2xx 상태코드는 클라이언트의 요청을 성공적으로 처리함을 뜻합니다.

200(OK)

  • 요청이 성공했으며 클라이언트가 요청한 데이터를 응답 본문에 반환했음을 나타내며 가장 일반적인 2xx 상태 코드입니다.

201(Created)

  • 클라이언트 요청에 대해 서버가 성공적으로 새로운 리소스를 생성했음을 나타냅니다. 응답에는 새로 생성된 리소스의 URL을 나타내는 Location 헤더가 포함됩니다.

204(No Content)

  • 서버가 요청을 성공적으로 처리했지만 응답 본문에 반환할 콘텐츠가 없음을 나타냅니다. 데이터를 삭제하거나 업데이트 요청처럼 받을 응답 본문이 없는경우에 사용됩니다.

 

HTTP 상태코드 3xx (Redirection)

웹 브라우저는 3xx 응답 결과에 Location 헤더가 있으면 자동으로 Location의 위치로 이동(Redirect) 합니다. 리다이렉션(Redirection)은 다음과 같이 크게 3가지 형태로 구분할수 있습니다.

  • 영구 리다이렉션: 특정 리소스의 URI가 영구적으로 이동 ex) 이벤트가 종료된 페이지 접근시 홈페이지로 이동
  • 일시 리다이렉션: 일시적인 변경 ex) 주문 결제 완료후 주문 내역 페이지로 이동
  • 특수 리다이렉션: 결과대신 캐시를 사용

301, 308 - 영구 리다이렉션

  • 301(Moved Permanently): redirect시 요청메서드가 GET으로 변하고 기존에 POST나 PUT등으로 요청하던 본문 내용이 사라질수 있습니다.
  • 308(Permanent Redirect): 301과 기능은 같지만 요청 메서드와 본문을 유지합니다. 실제로는 redirect 처리를 하게되면 서버에서 요구하는 데이터의 규격이 바뀌는 경우가 일반적이므로 대부분 301을 사용합니다.

302, 307, 303 - 일시적인 리다이렉션

  • 302(Found): 리다이렉트시 요청 메서드가 GET으로 변하고 본문이 제거될수 있습니다.(MAY)
  • 307(Temporary Redirect): 302와 기능은 같고 리다이렉트시 요청 메서드와 본문을 유지합니다.(MUST)
  • 303(See Other): 302와 기능은 같고 리다이렉트시 요청 메서드가 GET 으로 변경됩니다.

 

HTTP 상태코드 4xx (Client Error)

4xx 상태 코드는 클라이언트 측에서 발생한 오류를 나타냅니다. 일반적인 4xx 상태 코드로는 404 Not Found, 400 Bad Request, 403 Forbidden 등이 있습니다.

404(Not Found)

  • 클라이언트가 요청한 리소스를 서버에서 찾을 수 없는 경우 발생합니다. 일반적으로 잘못된 URL이나 요청 된 파일의 경로에 문제가 있을 때 발생합니다.

400(Bad Request)

  • 클라이언트가 잘못된 요청을 보내서 서버에서 처리할 수 없는 경우 발생합니다.

403(Forbidden)

  • 클라이언트가 요청한 리소스에 대한 액세스 권한이 없는 경우 발생합니다.

 

HTTP 상태코드 5xx (Server Error)

5xx 클래스의 상태 코드는 서버 측에서 발생한 오류를 나타냅니다. 일반적인 5xx 상태 코드로는 500 Internal Server Error, 503 Service Unavailable, 502 Bad Gateway 등이 있습니다.

500(Internal Server Error)

  • 서버에서 처리하는 동안 오류가 발생한 경우 발생합니다.

503(Service Unavailable)

  • 서버가 일시적으로 작동하지 않거나 과부하 상태인 경우 발생합니다.

502(Bad Gateway)

  • 서버가 게이트웨이 또는 프록시 서버를 통해 요청을 처리하려고 할 때 발생하는 오류입니다. 이는 일반적으로 게이트웨이 또는 프록시 서버에서 발생하는 문제로 인해 발생합니다.
반응형

댓글