
클라이언트가 서버에게 요청을 보내면 서버는 클라이언트에게 응답 메세지를 보내는데, 이에따른 처리결과를 status code를 보고 파악할 수 있다.
상태코드는 3자리의 숫자로 되어있는데, 첫번째는 HTTP 응답 종류를 구분하는데 사용하고, 뒤 2개의 숫자는 세부적인 응답 내용을 구분한 번호다.
100~500번대까지 상태코드가 정의되어 있는데, 첫번째 숫자에 따라 아래와 같이 5가지로 분류해서 사용하고 있다.
- 1xx: Informational(정보 제공)
- 임시 응답으로 현재 클라이언트의 요청까지는 처리되었으니 계속 진행하라는 의미
- 2xx: Success(성공)
- 클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미
- 3xx: Redirection(리다이렉션)
- 완전한 처리를 위해서 추가 동작이 필요한 경우, 주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그 주소로 다시 시도하라는 의미
- 4xx: Client Error(클라이언트 에러)
- 없는 페이지를 요청하는 등등 클라이언트의 요청 메세지 내용이 잘못된 경우를 의미
- 5xx: Server Error(서버 에러)
- 서버 사정으로 메세지 처리에 문제가 발생한 경우, 서버의 부하, DB 처리 과정 오류, 서버에서 익셉션이 발생하는 경우
각 상태별로 코드가 너무 많아서 몇가지 자주 사용하는것들을 살펴보자
- 100: Continue
- 계속 진행하라는 의미
- 101: Switching Protocols
- 현재는 HTTP 1.1이 최신이라 사용할 일이 없다
- 102: Processing
- 서버가 처리하는데 오랜시간이 예상되어 클라이언트에서 타임아웃이 발생하지 않도록 이 응답코드를 보냄
2xx: Success
- 200: OK
- 서버가 요청을 성공적으로 처리
- 201: Created
- 요청이 처리되어서 새로운 리소스가 생성되었다
- 202: Accepted
- 요청은 접수하였지만, 처리가 완료되지 않았다
3xx: Redirection
- 301: Moved Permanently
- 지정한 리소스가 새로운 URI로 이동했다
- 303: See Other
- 다른 위치로 요청해라
- 307: Temporary Redirection
- 임시로 리다이렉션 요청이 필요하다
4xx: Client Error
- 400: Bad Request
- 요청의 구문이 잘못 되었다
- 401: Unauthorized
- 지정한 리소스에 대한 엑세스 권한이 없다
- 403: Forbidden
- 지정한 리소스에 대한 엑세스가 금지되었다
- 404: Not Found
- 지정한 리소스를 찾을 수 없다
5xx: Server Error
- 500: Internal Server Error
- 서버에 에러가 발생했다
- 501: Not Implemented
- 요청한 URI의 메소드에 대해 서버가 구현되지 않았다
- 502: Bad Gateway
- 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 잘못된 응답을 받았다
- 503: Service Unavailable
- 현재 서버에서 서비스를 제공할 수 없다 (보통 서버 과부하 혹은 서버 점검 등 일시적인 상태)
이보다 더 많은 status code가 있어서 아래 링크를 통해 필요한 부분은 더 찾아보도록 하자
참고