[4장] HTTP 상태 코드

신은지·2021년 10월 1일
0
post-thumbnail

클라이언트가 HTTP 리퀘스트를 보낸 결과를 알려준다.

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

  • 상태 코드
    : 클라이언트가 보낸 리퀘스트를 서버에서 처리한 결과를 알려준다.

  • 클래스 정의만 지킨다면, 정의된 상태코드를 변경하거나 서버 독자의 상태 코드를 만들 수도 있다.


4.2 2xx 성공 (Success)

리퀘스트가 정상으로 처리되었다.

  • 200 ok
    : 클라이언트의 리퀘스트를 서버가 정상 처리한 경우
    : 메소드에 따라 리스폰스에 포함된 정보가 달라진다

  • 204 No Content
    : 서버가 리퀘스트를 처리했으나, 리스폰스에 엔티티 바디가 포함되지 않은 경우
    : 클라이언트가 새로운 정보 받을 필요 없이 정보를 보내기만 하면 되는 경우.

  • 206 Partial Content
    : Range에 의해 지정된 리퀘스트에 의해서 서버가 부분적 GET 리퀘스트를 받은 경우


4.3 3xx 리다이렉트 (Redirection)

리퀘스트의 처리를 위해 브라우저 측에서 특별한 처리를 수행해야 한다.

  • 301 Moved Permanently
    : 리소스에 새로운 URI가 부여되었으니 새로운 URI를 사용해라
    : 마지막에 슬래시(/) 잊은 경우 등

  • 302 Not Found
    : 리소스에 새로운 URI가 부여되었으니 새로운 URI를 사용해라
    : 일시적 이동이라는 점에서 301과 차이
    : 북마크의 경우, 북마크 변경이 아닌 302 리턴 페이지에 대해 북마크

  • 303 See Other
    : 리퀘스트에 대한 리소스가 다른 URI에 있으니 GET을 사용해라
    : 리다이렉트 장소를 GET 메소드로만 얻어야 한다는 점에서 302와 차이

301, 302, 303 리스폰스 코드의 경우, 대부분의 브라우저가 POST를 GET으로 바꾸어 리퀘스트를 재송신한다.

  • 304 Not Modified
    : 클라이언트의 조건부 리퀘스트에 대해 리소스에 대한 액세스는 허용하나, 조건은 충족하지 못한 경우
    : 리스폰스 바디에 아무것도 포함 X
    : 리다이렉트랑 관계 없음

  • 307 Temporary Redirect
    : 302와 같은 의미
    : 302는 POST를 GET으로 치환함 (금지되어 있는데)
    : 307은 브라우저 사양에 따라 POST를 GETt으로 치환하지 않는다


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

클라이언트의 원인으로 에러가 발생했다.

  • 400 Bad Request
    : 리퀘스트 구문이 잘못되었다
    : 리퀘스트 내용 수정 후 재송신 필요. 브라우저는 200 OK와 동일하게 취급한다

  • 401 Unauthorized
    : 송신한 리퀘스트에 HTTP 인증 정보가 필요하다.
    : 1번 리퀘스트가 이루어진 경우, 유저 인증에 실패했음을 알린다.

  • 403 Forbidden
    : 리퀘스트된 리소스의 액세스가 거부되었다.
    : 서버측의 거부 이유를 명확하게 할 경우, 엔티티 바디에 기재한다.
    : 파일 시스템의 퍼미션 문제, 액세스 권한 문제 등

  • 404 Not Found
    : 리퀘스트한 리소스가 서버상에 없다.
    : 서버 측에 해당 리퀘스트를 거부하고 싶은 이유를 명시하고 싶지 않은 경우도 해당


4.5 5xx 서버 에러 (Server Error)

서버 원인으로 에러가 발생했다.

  • 500 Internal Server Error
    : 서버에서 리퀘스트를 처리하는 도중에 에러가 발생했다.
    : 웹 어플리케이션의 일시적 에러 등

  • 503 Service Unavaliable
    : 일시적으로 서버가 과부하 상태이거나 점검중이기 때문에 리퀘스트를 처리할 수 없다
    : 해소될 때까지 시간이 걸린다면 Retry-After 헤더 필드에 따라 클라이언트에 전달하는 것이 좋다


상태 코드는 현재 상황과 불일치할 수 있다

  • 유저는 상태 코드를 통해 다른 정보를 알기 어렵다.
  • 에러 발생 시 원인이 상태 코드와 불일치 할 수 있다.
profile
호그와트 장학생

0개의 댓글