웹 서버는 HTTP Request가 오면 그에 대한 결과를 HTTP Response를 보냅니다. 이 때, Status Code에 정의된 성공이나 오류, 리다이렉션 등에 대한 정보를 아래와 같이 Response에 포함시켜 보냅니다.
아래 그림에서 "200 OK"가 Status Code 이며, 공식 HTTP Status Code Registry는 IANA(Internet Assigned Numbers Authority)에서 관리하고 있습니다.
Note
Status Code의 첫 번째 숫자는 Response의 5가지 종류 중 하나를 뜻합니다.
1xx | Informational | Request를 받았으며, 작업을 계속한다. |
2xx | Success | 요청한 동작을 수신, 이해, 승낙했으며 성공적으로 처리했다. |
3xx | Redirection | Client는 Request를 완료하기 위해 추가적인 동작을 취해야 한다. |
4xx | Client Error | Client 오류. Request에 잘못된 Syntax가 포함되거나, 수행하지 못함을 뜻 한다. |
5xx | Server Error | Server 오류. Server가 Request를 이행하는데 실패했음을 뜻 한다. |
아래는 자주 접하는 Code를 정리한 표이며, 모든 Code에 대한 설명은 Wikipedia에 있습니다.(영어 wiki, 한글 wiki)
2xx : Success
200 | OK | * 요청 정상 처리. |
204 | No Content | * 요청 정상 처리하였지만, 돌려줄 리소스 없음. * 응답에 어떠한 엔티티 바디(Entity Body)도 포함하지 않음. * 서버에서 처리 후, 클라이언트에 정보를 보낼 필요가 없는 경우 사용. |
206 | Partial Content | * Range가 지정된 요청인 경우, 지정된 범위만큼의 요청을 받았다는 것을 알려줌. |
3xx : Redirection
301 | Moved Permanently | * 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후로는 새 URI를 사용해야 한다는 것을 나타냄. (영구적인 URI 변경) |
302 | Found | * 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후로는 새 URI를 사용해야 한 다는 것을 나타냄. 301과 유사하지만, 302는 일시적인 URI 이동) |
303 | See Other | * 이 응답은 요청에 대한 리소스는 다른 URI에 있기 때문에 GET 메서드를 사용해서 얻어야 한다는 것을 나타냄. 302 코드와 같지만, 303은 리디렉션 위치를 GET 메서드를 통해 얻어야 한다고 명확하게 되어 있음. |
304 | Not Modified | * 요청한 리소스가 마지막 요청 이후 변경된 적이 없기 때문에 기존 클라이언트의 로컬 캐시 리소스를 사용하도록 알려줌. * 300번대로 분류되어 있지만, 리디렉션과는 관계없는 처리를 함. |
307 | Temporary Redirect | * 임시로 페이지를 리다이렉트 함. |
4xx : Client Error
400 | Bad Request | * 클라이언트의 요청 구문이 잘못됨. * 브라우저는 이 응답을 200 OK 응답과 동일한 형태로 취급함. |
401 | Unauthorized | * 요청 처리를 위해 HTTP 인증(BASIC 인증, DIGEST 인증) 정보가 필요함을 알려줌. * 접근 허용을 차단함. 최초 요청에는 인증 다이얼로그 표시하고, 두번째는 인증 실패 응답을 보냄. |
403 | Forbidden | * 접근 금지 응답. Directory Listing 요청(서버 파일 디렉토리 목록 표시) 및 관리자 페이지 접근 등을 차단하는 경우의 응답. (파일 시스템 퍼미션 거부, 허가 되지 않은 IP 주소를 통한 액세스의 거부 등) * 서버는 엔티티 바디에 접근 거부에 대한 이유를 명시하여 보낼 수 있음. |
404 | Not Found | * 클라이언트가 요청한 리소스가 서버에 없음 |
405 | Mothod Not Allowed | * 허용되지 않는 HTTP 메서드를 사용함. |
5xx : Server Error
500 | Internal Server Error | * 서버에서 클라이언트 요청을 처리 중에 에러가 발생함. |
503 | Service Unavailable | * 서버가 일시적으로 요청을 처리할 수 없음. * 서버가 과부하 상태이거나 점검중이므로 요청을 처리할 수 없음을 알려줌. |
504 | Gateway Timeout | * 서버를 통하는 게이트웨이에 문제가 발생하여 시간이 초과됨. |
505 | HTTP Version Not Supported | * 해당 HTTP 버전에서는 지원되지 않는 요청임을 알려줌. |