본문 바로가기

네트워크 공부

[ 네트워크 ] HTTP 상태 코드

상태 코드

클라이언트가 서버를 향해 리퀘스트를 보낼 때 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태 코드의 역할입니다. 서버가 리퀘스트를 정상적으로 처리했는지, 그렇지 않으면 리퀘스트 결과가 에러였는지를 알 수 있습니다.

  클래스 설명
1XX Informational 리퀘스트를 받아들여 처리중
2XX Success 리퀘스트를 정상적으로 처리했음
3XX Redirection 리퀘스트를 완료하기 위해서 추가 동작이 필요
4XX Client Error 서버는 리퀘스트 이해 불가능
5XX Server Error 서버는 리퀘스트 처리 실패

 

2XX

2XX 리스폰스는 리퀘스트가 정상적으로 처리되었음을 나타냅니다.

 

> 204 No Content

이 리스폰스는 서버가 리퀘스트를 받아서 처리하는 데는 성공했지만 리스폰스에 엔티티 바디를 포함하지 않습니다. 이것은 클라이언트에서 서버에 정보를 보내는 것으로 족하고, 클라이언트에 대해서 새로운 정보를 보낼 필요가 없는 경우에 사용됩니다.

 

> 206 Partial Content

이 리스폰스는 Range에 의해서 범위가 지정된 리퀘스트에 의해서 서버가 부분적 GET 리퀘스트를 받았음을 나타내고 있습니다. 리스폰스에는 Content-Range로 지정된 범위의 엔티티가 포함되게 됩니다.

 

3XX

3XX 리스폰스는 리퀘스트가 정상적으로 처리를 종료하기 위해 브라우저 측에서 특별한 처리를 수행해야 함을 나타냅니다.

 

> 301 Moved Permanently

이 리스폰스는 리퀘스트된 리소스에는 새로운 URI가 부여되어 있기 때문에, 이후로는 그 리소스를 참조하는 URI를 사용해야 한다는 것을 나타내고 있습니다. 301이 발생하는 상황으로는 디렉토리를 지정했을 때에 마지막 부분에 슬래시( / )를 붙이는 것을 잊은 경우 등이 있습니다.

 

> 302 Found

이 리스폰스는 리퀘스트된 리소스에는 새로운 URI가 할당되어 있기 때문에, 그 URI를 참조해 주길 바란다는 의미를 나타내고 있습니다. 301 Moved Permanently와 비슷하지만 302의 경우에는 영구적인 이동이 아닌, 어디까지나 일시적인 것입니다.

 

> 303 See Other

이 리스폰스는 리퀘스트에 대한 리소스는 다른 URI에 있기 때문에 GET 메소드를 사용해서 얻어야 한다는 것을 나타내고 있습니다. 이것은 302 Found와 같은 기능이지만, 리다이렉트 장소를 GET 메소드로 얻어야 한다고 명화갛게 되어 있는 점이 302와 다릅니다.

 

> 304 Not Modified

이 리스폰스는 클라이어느가 조건부 리퀘스트를 했을 때 리소스에 대한 액세스는 허락하지만, 조건이 충족되지 않음을 표시하고 있습니다. 304는 3xx에 분류되어 있지만 리다이렉트와는 관련이 없습니다.

 

> 307 Temporary Redirect

이 리소픈스는 302 Found와 같은 의미를 지니지만, 302의 경우에는 POST로부터 GET으로 치환이 금지되어 있는데도 불구하고 구현상 그와 같이 되어 있지는 않습니다.

 

4XX

4xx 리스폰스는 클라이언트의 원인으로 에러가 발생했음을 나타냅니다.

 

> 400 Bad Request

이 리스폰스는 리퀘스트 구문이 잘못되었음을 나타내고 있습니다. 이 에러가 발생한 경우, 리퀘스트 내용을 재검토하고 나서 재송신할 필요가 있습니다.

 

> 401 Unauthorized

이 리스폰스는 송신한 리퀘스트에 HTTP 인증정보가 필요하다는 것을 나타내고 있습니다. 또한, 이미 1번 리퀘스트가 이루어진 경우에는 유저 인증에 실패했음을 표시합니다. 401을 포함한 리스폰스를 되돌리는 경우에는 리퀘스트 된 리소스에 적용되는 challenge를 포함한 WWW-Authenticate 헤더 필드를 포함할 필요가 있습니다.

 

> 403 Forbidden

이 리스폰스는 리퀘스트된 리소스의 액세스가 거부되었음을 나타내고 있습니다. 서버 측은 거부의 이유를 분명히 할 필요가 있는데, 이유를 명확하게 하는 경우에는 엔티티 바디에 기재해서 유저 측에 표시합니다. 403이 발생한 원인으로는 파일 시스템의 퍼미션이 부여되지 않은 경우와 액세스 권한에 문제가 있는 것을 예로 들 수 있습니다.

 

> 404 Not Found

이 리스폰스는 리퀘스트한 리소스가 서버상에 없다는 것을 나타내고 있습니다. 그 외에도 서버 측에 해당 리퀘스트를 거부하고 싶은 이유를 분명히 하고 싶지 않은 경우에도 이용할 수 있습니다.

 

5XX

 

> 500 Internal Server Error

이 리스폰스는 서버에서 리퀘스트를 처리하는 도중에 에러가 발생하였음을 나타내고 있습니다.

웹 애플리케이션에 에러가 발생한 경우나 일시적인 경우도 있습니다.

 

> 503 Service Unavailable

이 리스폰스는 일시적으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 리퀘스트를 처리할 수 없음을 나타내고 있습니다. 이 상태가 해소되기까지 시간이 걸리는 경우에는 Retry-After 헤더 필드에 따라 클라이언트에 전달하는 것이 바람직합니다.