ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP Response Status Code (응답 상태 코드)
    네트워크 2020. 10. 1. 16:36
    반응형

    전에 HTTP Request / Response 메시지 구조에 이어서 HTTP Response Status Code에 대해 알아보겠습니다.

     

     


    웹 개발 공부를 하다보면 흔히 볼 수 있는 상태 코드가 200, 404 일겁니다.

    더 나아가 권한과 관련된 403이나 서버와 관련된 500번대 코드를 보게 되실건데 교육 받을 당시, 강사님께서 프로젝트를 진행하다가 에러가 발생하면 차라리 500번대 코드를 보는게 수정하기 더 편할거다 라고 말씀하시고 공감이 갔던게 기억이 나네요.

     

    아무튼 이러한 코드의 종류와 왜 발생하는지에 대해 알아봅시다.

     

     

    HTTP Status Code

     

     

    HTTP 상태 코드는 클라이언트가 서버에 Request를 하고 그에 따라 서버가 Response를 했을 때, 요청한 결과가 어떻게 처리되었는지를 알려줍니다.

    여기서 400번대와 500번대의 차이점은 400번대는 클라이언트의 요청이 잘못되어 서버에서 처리하지 못한 것이고, 500번대는 클라이언트의 요청은 이상없으나, 서버에서 처리 중에 서버 문제로 인해 오류가 발생한 것이라고 합니다.

     

    상태 코드 의미 설명
    1xx Informational(정보) 요청을 받았으며 프로세스를 계속 진행합니다.
    2xx Success(성공) 요청을 성공적으로 받았으며 인식했고 수용했습니다.
    3xx Redirection(리다이렉션) 요청 완료를 위해 추가 작업 조치가 필요합니다.
    4xx Client Error(클라이언트 에러) 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
    5xx Server Error(서버 에러) 서버가 명백히 유효한 요청에 대해 충족을 실패했습니다.

     

     

     

    1xx (Informational)

     

     

    서버가 요청을 받았으며 서버에 연결된 클라이언트는 작업을 계속 진행하라는 의미입니다. HTTP/1.1에서 도입되었습니다.

     

     

    100 Continue : 서버가 요청의 첫 번째 부분을 받았으며, 나머지를 기다리고 있음을 나타냅니다.

     

    101 Switching Protocol : 요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중입니다.

     

    102 Processing : 서버가 요청을 수신하였으며 이를 처리하고 있지만, 아직 제대로 된 응답을 알려줄 수 없음을 알려줍니다.

     

     

     

    2xx (Success)

     

     

    클라이언트가 요청한 동작을 서버가 수신하여 성공적으로 처리하였음을 나타냅니다.

     

     

    200 OK : 서버가 요청을 정상적으로 처리했다는 의미입니다. 정보는 요청에 따른 응답으로 반환됩니다.

     

    204 No Content : 서버가 요청을 정상적으로 처리했지만, 제공할 내용이 없다는 뜻입니다. 서버에서 처리 후 클라이언트에 정보를 보낼 필요 없는 경우도 사용합니다.

     

    206 Partial Content : 지정된 범위만큼의 요청만 받았다는 것을 알려줍니다.

     

     

     

    3xx (Redirection)

     

     

    클라이언트는 요청을 마치기 위해 추가 동작을 취해야 합니다.

     

     

    301 Moved Permanently : 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후 새 URI를 사용해야 한다는 것을 나타냅니다. (영구적인 이동)

     

    302 Found : 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후 새 URI를 사용해야 한다는 것을 나타냅니다. (일시적인 이동)

     

    303 See Other : 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우, 서버는 이 코드를 표시합니다. HEAD 요청 이외의 모든 요청을 다른 위치로 자동으로 전달합니다. (302코드와 같지만, 303은 Redirection 위치를 GET 메소드를 통해 얻어야 한다고 명확하게 되어있습니다.)

     

    304 Not Modified : 요청한 리소스가 마지막 요청 이후 변경된 적이 없기 때문에 기존 클라이언트의 로컬 캐시 리소스를 사용하도록 알려줍니다. (300번대이지만 Redirection과 관계없는 처리를 합니다.)

     

    307 Temporary Redirect : 클라이언트가 요청한 리소스가 다른 URI에 있고, 이전 요청과 동일한 메소드를 사용하여 요청해야할 때, 서버가 클라이언트에 이 응답을 직접 보냅니다. (302와 동일하지만, 메소드도 변경없이 요청해야함을 의미합니다.)

     

     

     

    4xx (Client Error)

     

     

    클라이언트의 잘못된 요청에 대한 대응 코드입니다.

     

     

    400 Bad Request : 클라이언트의 요청 구문이 잘못되었다는 의미입니다.

     

    401 Unauthorized : 요청을 위해서 권한 인증 등을 요구한다는 의미입니다. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있습니다.

     

    403 Forbidden : 요청이 서버에 의해 거부 되었음을 의미합니다. 서버는 거부 이유를 포함하여 응답할 수 있지만, 보통은 거부 이유를 숨기고 싶을 때 사용됩니다.

     

    404 Not Found : 클라이언트가 요청한 리소스가 서버에 없다는 의미입니다.

     

    405 Method Not Allowed : 허용되지 않은 HTTP 메소드를 사용했다는 의미입니다. ex) POST 요청에 GET 메소드 사용

     

    406 Not Acceptable : 클라이언트 요청에 대해 적절한 컨텐츠가 없다는 의미입니다.

     

    409 Conflict : 클라이언트 요청에 대해 서버에서 충돌 요소가 발생할 수 있다는 의미입니다.

     

     

     

    5xx (Server Error)

     

    서버가 유효한 요청을 명백하게 수행하지 못했음을 나타냅니다.

     

     

    500 Internal Server Error : 서버에서 클라이언트 요청을 처리 중에 에러가 발생했다는 의미입니다.

     

    502 Bad Gateway : 서버가 요청을 처리하는데 필요한 응답을 얻기 위해 게이트웨이로 작업하는 동안 잘못된 응답을 수신했음을 의미합니다.

     

    503 Service Unavailable : 서버가 일시적으로 요청을 처리할 수 없음을 의미합니다. 서버가 과부하 상태이거나 점검중이므로 요청을 처리할 수 없음을 알려줍니다.

     

    504 Gateway Timeout : 서버를 통하는 게이트웨이에 문제가 발생하여 시간이 초과됨을 의미합니다.

     

    505 HTTP Version Not Supported : 해당 HTTP 버전에서는 지원되지 않는 요청임을 알려줍니다.

     

     

     

    References

     

    - https://developer.mozilla.org/ko/docs/Web/HTTP/Status

    - https://ooz.co.kr/260

    - https://ifuwanna.tistory.com/4

    728x90

    '네트워크' 카테고리의 다른 글

    TCP Flag란?  (0) 2020.10.22
    REST API란?  (0) 2020.10.10
    3-Way / 4-Way Handshake  (0) 2020.10.04
    HTTP Request / Response 메시지 구조  (0) 2020.09.28
    TCP/IP 및 TCP, UDP  (0) 2020.09.20

    댓글

Designed by Tistory.