[그림으로 배우는 HTTP & Network Basic] 4장 결과를 전달하는 HTTP 상태 코드
[그림으로 배우는 HTTP & Network Basic] 4장 결과를 전달하는 HTTP 상태 코드

[그림으로 배우는 HTTP & Network Basic] 4장 결과를 전달하는 HTTP 상태 코드

Tags
우에노 센
Network
HTTP
Published
June 4, 2023
Author
lkdcode

상태 코드는 서버로부터 리퀘스트 결과를 전달한다.


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

2xx 성공


  • 200 OK : 리퀘스트 정상 처리
  • 204 No Content : 리퀘스트를 정상 처리 했지만 리스폰스에 엔티티 바디를 포함하지 않음. 클라이언트에서 서버에 정보를 보내는 것으로 족하고, 클라이언트에 대해서 새로운 정보를 보낼 필요가 없는 경우 사용
  • 206 Partial Content : Range에 의해서 범위가 지정된 리퀘스트에 의해서 서버가 부분적 GET 리퀘스트를 받았음을 나타냄. 리스폰스에는 Content-Range로 지정된 범위의 엔티티가 포함

3xx 리다이렉트 (Redirection)


  • 301 Moved Permanently : 리퀘스트된 리소스에는 새로운 URI가 부여되어 있기 때문에 이후로는 그 리소스를 참조하는 URI를 사용해야 한다는 것을 나타냄.
  • 302 Found : 리퀘스트된 리소스에는 새로운 URI가 할당되어 있기 때문에 그 URI를 참조해 주길 바란다는 의미를 나타냄.
  • 303 See Other : 리퀘스트에 대한 리소스는 다른 URI에 있기 때문에 GET 메소드를 사용해서 얻어야 한다는 것을 나타냄.
    • POST 메소드로 액세스한 CGI 프로그램을 실행한 후에 처리 결과를 별도의 URI에 GET 메소드로 리다이렉트 시키고 싶은 경우 등에 303을 사용.
301, 302, 303 리스폰스 코드가 되돌아 오면, 대부분의 브라우저에서는 POST를 GET으로 바꾸어서 리퀘스트의 엔티티 바디를 삭제하고 리퀘스트를 자동적으로 재송신하도록 되어 있습니다. 301, 302의 사양은 POST 메소드를 GET 메소드에 바꾸는 것을 금지하고 있지만 구현해 놓은 것을 보면 이렇게 되어 있는 것이 대부분입니다.
  • 304 Not Modified : 클라이언트가 조건부 리퀘스트를 했을 때 리소스에 대한 액세스는 허락하지만, 조건이 충족되지 않음을 표시하고 있음. 리스폰스 바디에 어떤 것도 포함되어 있어서는 안 된다. 리다이렉트와는 관계가 없음
  • 307 Temporary Redirect : 302 Found와 같은 의미를 지니지만, 307에서는 브라우저 사양에 따라 POST에서 GET으로 치환을 하지 않음. 브라우저마다 리스폰스를 처리하는 동작이 다를 경우가 있음

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


  • 400 Bad Request : 리퀘스트 구문이 잘 못 된 경우
  • 401 Unauthorized : 송신한 리퀘스트에 HTTP 인증 (BASIC 인증, DIGEST 인증) 정보가 필요하다는 것을 나타냄. 이미 1번 리퀘스트가 이루어진 경우에는 유저 인증에 실패했음을 표시
  • 403 Forbidden : 리소스의 액세스가 거부되었음을 나타냄. 이유를 명확하게 하는 경우에는 엔티티 바디에 기재해서 유저 측에 표시함. 파일 시스템의 퍼미션이 부여되지 않은 경우와 액세스 권한에 문제(허가되지 않은 송신 IP 주소의 액세스 등)가 있는 것을 예로 들 수 있음
  • 404 Not Found : 리소스가 서버상에 없다는 것을 나타냄. 서버 측에 해당 리퀘스트를 거부하고 싶은 이유를 분명히 하고 싶지 않은 경우에도 사용 됨

5xx 서버 에러(Server Error)


  • 500 Internal Server Error : 리퀘스트를 처리하는 도중에 에러가 발생하였음을 나타냄.
  • 503 Service Unavaliable : 일시적으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 리퀘스트를 처리할 수 없음을 나타냄. 상태가 해소되기까지 시간이 걸리는 경우에는 Retry-After 헤더 필드에 따라 클라이언트에게 전달하는 것이 바람직함
상태 코드가 현재 상황과 불일치할 수도 있다.
리스폰스로 되돌아오는 상태 코드의 대부분은 유저가 다른 내용을 알기 어렵게 되어 있음 흔히 잇는 상황으로 웹 애플리케이션에서 애플리케이션 에러가 발생한 경우에도 상태 코드로는 [200 OK]가 되돌아오는 경우가 있음