본문 바로가기
Stg

HTTP 상태코드

by 호랑2 2023. 4. 11.

클라이언트가 서버를 향해 리퀘스트를 보낼 때, 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태 코드의 역할이다.

서버가 리퀘스트를 정상적으로 처리했는지, 그렇지 않으면 리퀘스트 결과가 에러였는지를 알 수 있다.

 

출처 : http://blog.plura.io/?p=14782

 

상태 코드 클래스

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

2XX 성공(Success)

1) 200 OK

클라이언트가 보낸 리퀘스트를 서버가 정상 처리하였음을 나타낸다.

리스폰스에서 상태 코드와 함께 되돌아 오는 정보는 메소드에 따라 달라진다.

 

2) 204 No Content

이 리스폰스는 서버가 리퀘스트를 받아서 처리하는 데는 성공했지만, 리스폰스에 엔티티 바디를 포함하지 않는다.

또한 어떠한 엔티티 바디를 되돌려 보내서도 안된다. 이것은 클라이언트에서 서버에 정보를 보내는 것으로 작업이 완료되고 

클라이언트에 대해서 새로운 리소스를 보낼 필요가 없는 경우에 사용된다.

 

3) 206 Partial Content

이 리스폰스는 Range 에 의해서 범위가 지정된 리퀘스트에 대해서 서버가 부분적 GET 리퀘스트를 받았음을 나타낸다.

리스폰스에는 Content-Range 로 지정된 범위의 엔티티가 포함된다.

3XX 리다이렉트(Redirection)

1) 301 Moved Permanently

이 리스폰스는 리퀘스트된 리소스에는 새로운 URI 가 부여되어 있기 때문에, 이후로는 그 리소스를 참조하는 URI 를 사용해야 한다는 것을 나타낸다. 

 

2) 302 Found

이 리스폰스는 리퀘스트된 리소스에 할당된 새로운 URI 를 참조해 달라는 의미를 갖고 있다. 301 과 비슷한 것 같지만, 301 의 경우에는 새로 참조하는 URI 가 영구적인 URI 로 변경이 되지 않는다는 의미를 담고 있다면 302 의 경우에는 일시적으로 사용되는 URI 를 나타낸다.

 

3) 303 See Other

이 리스폰스는 리퀘스트에 대한 리소스는 다른 URI 에 있기 때문에 GET 메소드를 사용해서 얻어야 한다는 것을 의미한다.

302 와 차이점은 리다이렉트 장소를 GET 메소드로 얻어야 한다고 명확하게 명시한다는 부분이다.

 

4) 304 Not Modified

이 리스폰스는 클라이언트가 조건부 리퀘스트를 했을 떄 리소스에 대한 엑세스는 허락하지만, 조건이 충족되지 않음을 표시한다.

304 를 되돌려 줄때는 리스폰스 바디에 어떤 것도 포함되어 있어서는 안된다.

 

5) 307 Temporary Redirect

307 은 302 와 동일하게 일시적으로 변경된 URI 로 이동을 의미한다. 다만 302와 차이점은, 302 는 리다이렉트 시에 GET 메소드로 변경하여 이동하지만, 307 은 메소드의 변경 없이 리다이렉트를 진행한다.

 

4XX 클라이언트 에러(Client Error)

1) 400 Bad Request

이 리스폰스는 리퀘스트 구문이 잘못되었음을 나타낸다. 이 에러가 발생한 경우 리퀘스트 내용을 재검토 하고 나서 재송신해야 한다.

또한 브라우저는 이것을 200 OK 와 같이 취급한다.

 

2) 401 Unauthorized

이 리스폰스는 송신한 리퀘스트에 HTTP 인증 정보가 필요하다는 것을 나타낸다. 또한 이미 한번 리퀘스트가 이뤄진 경우에는 유저 인증에 실패했음을 표시한다. 401 을 포함한 리스폰스를 되돌리는 경우에는 리퀘스트 된 리소스에 적용되는 challenge 를 포함한 WWW-Authenticate 헤더 필드를 포함할 필요가 있다. 브라우저에서 처음 401 리스폰스를 받은 경우에는 인증을 위한 다이얼로그가 표시된다.

 

3) 403 Forbidden

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

 

4) 404 Not Found

이 리스폰스는 리퀘스트한 리소스가 서버상에 없다는 것을 나타낸다.

5XX 서버 에러(Server Error)

1) 500 Internal Server Error

이 리스폰스는 서버에서 리퀘스트를 처리하는 도중에 에러가 발생하였음을 나타낸다. 웹 애플리케이션에 에러가 발생한 경우나 일시적인 경우도 있다.

 

2) 503 Service Unavaliable

이 리스폰스는 일시적으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 리퀘스트를 처리할 수 없음을 나타낸다.

이 상태가 해소되기까지 시간이 걸리는 경우에는 Retry-After 헤더 필드에 따라 클라이언트에 전달하는 것이 바람직하다.

 

'Stg' 카테고리의 다른 글

HTTP 헤더  (0) 2023.04.14
HTTP와 연계하는 웹 서버  (0) 2023.04.12
Persistent connection / Stateless  (0) 2023.04.06
HTTP 메소드  (0) 2023.04.05
HTTP  (0) 2023.04.04

댓글