ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTTP 기본] HTTP 상태 코드
    기타 2022. 2. 22. 16:39
    반응형

    이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다.

    틀리거나 잘못된 정보가 있을 수 있습니다.

    댓글로 알려주시면 수정하도록 하겠습니다.


     

    1. HTTP 상태 코드

    클라이언트가 리퀘스트를 보내고 해당 리퀘스트에 대한 처리 결과를 리스폰스를 통해서 전송합니다.

     

    이때 서버가 정상적으로 리퀘스트를 처리를 하였는지 아니면 에러가 발생하였는지 결과에 대한 상태를 알려주는 코드를 말합니다.

     

    상태 코드는 숫자로 나타내며 코드는 5가지의 종류로 나누어져 있습니다.

    코드 클래스 설명
    1XX Informational 리퀘스트에 대한 처리를 진행중인 상태
    2XX Success 리퀘스트를 정상적으로 처리를 완료한 상태
    3XX Redirectrion 리퀘스트를 완료하려면 추가 동작을 수행해야하는 상태
    4XX Client Error 클라이언트 측의 오류로 인한 처리 불가 상태
    5XX Server Error 서버 측의 오류로 인한 처리 불가 상태

     

    상태 코드는 위 클래스의 정의만 지킨다면 독자적인 코드를 만들어 사용하여도 문제가 없습니다.

     

    2. 200번대 코드

    200번대 상태 코드는 리퀘스트에 대한 처리가 성공적으로 완료되었다는 것을 말합니다.

     

    또한 200번대의 여러 코드를 통해 리퀘스트에 대한 처리를 완료하였고 해당 상세 상태를 표시합니다.

     

    • 200 Success 코드
      클라이언트가 요청한 리퀘스트에 대하여 서버가 정상적으로 처리를 완료하였음을 나타냅니다.
      또한 리스폰스에는 클라이언트가 요청한 엔티티가 포함되어 전송될 수 있습니다.

    • 204 No Content 코드
      클라이언트가 요청한 리퀘스트에 대하여 서버가 정상적으로 처리하였고 해당 리스폰스는 엔티티 바디를 포함하고 있지 않다는 것을 통시에 표시하는 상태 코드입니다.

      204 코드로 리스폰스 하는 경우에는 엔티티 바디가 포함되어서는 안 됩니다.

    • 206 Partial Content 코드
      클라이언트가 요청한 리퀘스트가 Range에 의해 범위의 데이터를 요청한 경우 서버가 정상적으로 처리하였고 요청한 범위의 데이터를 리스폰스 할 때 표시하는 상태 코드입니다.

      리스폰스에는 Content-Range로 요청한 범위의 엔티티가 포함됩니다.

    3. 300번대 코드

    300번대 상태 코드는 리퀘스트를 정상적으로 완료하기 위해서는 추가적인 동작이 필요하다는 것을 말합니다.

     

    • 301 Moved Permanently 코드
      클라이언트가 요청한 리소스의 URI가 새로운 URI로 새로 부여되었을 때 리소스를 참조하는 URI를 새로운 URI로 변경을 요청하는 상태 코드입니다.

    • 302 Found 코드
      클라이언트가 요청한 리소스에 임시로 새로운 URI가 할당되어 해당 URI를 참조하라고 알려주는 상태 코드입니다.

      301 코드와 302 코드의 차이점은 301의 경우 영구적으로 새로운 URI가 등록된 것이지만 302의 경우는 임시적인 URI등록이므로 언제든지 새로운 URI로 변경이 될 수 있다는 차이점이 있습니다.

    • 303 See Other
      클라이언트가 요청한 리소스는 다른 URI에 있기 때문에 해당 URI에 GET 메소드를 통해 리소스를 받으라고 알려주는 상태 코드입니다.

      302 코드와 303 코드의 차이점은 302의 경우는 POST메소드로 요청을 한 뒤 302 코드를 리스폰스로 받은 경우 응답받은 URI로 POST 메소드를 사용하여 요청하여도 문제가 되지 않습니다. 그러나 303의 경우는 명시적으로 GET 메소드를 이용해 응답받은 URI로 요청하라는 차이점이 있습니다.

    • 304 Not Modified
      클라이언트가 특정 조건이 있는 리소스에 대한 리퀘스트를 하였을 때 리소스에 대한 접근은 있지만 해당 조건이 만족하지 않은 경우 사용하는 상태 코드입니다.

      304의 경우 300번대의 Redirection 클래스에 포함된 상태 코드이지만 Redirection과는 관련이 없습니다.

    • 307 Temporary Redirect
      307 상태 코드의 경우 302와 동일 역할을 합니다. 그러나 차이점은 302의 경우 브라우저에서 POST 요청을 GET 요청으로 강제 변환하여 재요청을 수행하지만 307의 경우는 강제 변환을 진행하지 않고 재요청을 진행하는 상태 코드입니다.

    4. 400번대 코드

    클라이언트 측의 원인으로 오류가 발생한 것을 말합니다.

    • 400 Bad Request 코드
      리퀘스트 요청의 구문에 이상이 있는 경우를 말하는 상태 코드입니다.

      400 상태 코드의 경우 브라우저는 200 상태 코드와 동일하게 동작합니다.
    • 401 Unauthorized 코드
      클라이언트가 요청한 리퀘스트의 경우 HTTP 인증 정보가 필요하는 것을 나타내는 상태 코드입니다.

      만약 클라이언트가 HTTP 인증 정보를 포함한 리퀘스트를 전송하고 401 상태 코드의 리스폰스를 받은 경우 인증에 실패한 것을 나타 냅니다.

    • 403 Forbidden 코드
      클라이언트가 요청한 리스폰스에 대한 접근이 거부된것을 나타내는 상태 코드입니다.

      리스폰스의 엔티티 바디에는 리소스에 대한 접근이 거부된 상세한 이유를 추가하여 전송 합니다.

    • 404 Not Found 코드
      가장 흔히 볼 수 있는 상태 코드로 클라이언트가 요청한 리소스가 서버에 없는 것을 나타내는 상태 코드입니다.

      404의 경우 추가적으로 리소스에 대한 접근을 거부하고 거부에 대한 상세 이유를 전달하기 어려운 경우에도 사용됩니다.

    5. 500번대 코드

    서버 측의 원인으로 오류가 발생한 것을 말합니다.

     

    • 500 Internal Server Error 코드
      클라이언트가 요청을 서버가 처리하는 도중에 오류가 발생한 것을 나타내는 상태 코드입니다.

    • 503 Service Unavailable
      서버가 일시적으로 과부화 되거나 현재 서버의 점검이 진행 되고 있어 리퀘스트에 대한 처리가 불가능 한 상태를 나타내는 상태 코드입니다.

      현재 리퀘스트를 처리할 수 없는 상태가 해소되는 시간이 정해진 경우는 Retry-After 헤더에 헤소 예정 시간을 추가하여 전달 할 수 있습니다.

     

    리스폰스의 상태 코드는 현재 상황과 맞지 않는 경우도 있습니다. 상태 코드의 경우 사용자가 알 수 없는 정보들이 많습니다.

     

    그러므로 오류가 발생 하여도 400또는 500번대 상태 코드가 아닌 200번대 상태 코드를 반환하거나 하는 등의 경우가 있습니다.

    반응형

    '기타' 카테고리의 다른 글

    [AWS] EC2 Gradlew 실행 권한 없음  (0) 2022.03.11
    [HTTP 기본] HTTP 헤더  (0) 2022.02.24
    [HTTP 기본] HTTP 메시지  (0) 2022.02.22
    [HTTP 기본] HTTP 메소드  (0) 2022.02.17
    [HTTP 기본] 간결한 HTTP 프로토콜  (0) 2022.02.17

    댓글

Designed by Tistory.