HTTP 상태 코드

최현석·2022년 10월 5일
0

JSP

목록 보기
1/13

🧩 1xx (조건부 응답)

요청을 받았으며 작업을 계속한다

  • 100(계속)
    요청자는 요청을 계속해야 한다. 서버는 이 코드를 제공하여 요청의 첫 번째 부분을 받았으며 나머지를 기다리고 있음을 나타낸다.

  • 101(프로토콜 전환)
    요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중이다.

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

🧩2xx (성공 응답)

이 클래스의 상태 코드는 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.

  • 200(성공)
    서버가 요청을 제대로 처리했다는 뜻이다. 이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰인다.

  • 201(작성됨)
    성공적으로 요청되었으며 서버가 새 리소스를 작성했다.

  • 202(허용됨)
    서버가 요청을 접수했지만 아직 처리하지 않았다.

  • 203(신뢰할 수 없는 정보)
    서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있다.

  • 204(콘텐츠 없음)
    서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않는다.

  • 205(콘텐츠 재설정)
    서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는다. 204 응답과 달리 이 응답은 요청자가 문서 보기를 재설정할 것을 요구한다(예: 새 입력을 위한 양식 비우기).

  • 206(일부 콘텐츠)
    서버가 GET 요청의 일부만 성공적으로 처리했다.

  • 207(다중 상태)
    멀티-상태 응답은 여러 리소스가 여러 상태 코드인 상황이 적절한 경우에 해당되는 정보를 전달합니다. 해당 코드는 WebDAV(Web Distributed Authoring and Vesioning)에 사용됩니다.

  • 208(이미 보고됨)
    DAV에서 사용됩니다: propstat(property와 status의 합성어) 응답 속성으로 동일 컬렉션으로 바인드된 복수의 내부 멤버를 반복적으로 열거하는 것을 피하기 위해 사용됩니다.

  • 226 IM Used (HTTP Delta encoding)
    서버가 GET 요청에 대한 리소스의 의무를 다 했고, 그리고 응답이 하나 또는 그 이상의 인스턴스 조작이 현재 인스턴스에 적용이 되었음을 알려줍니다.

🧩3xx (리다이렉션 완료)

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

  • 300(여러 선택항목)
    서버가 요청에 따라 여러 조치를 선택할 수 있다. 서버가 사용자 에이전트에 따라 수행할 작업을 선택하거나, 요청자가 선택할 수 있는 작업 목록을 제공한다.

  • 301(영구 이동)
    요청한 페이지를 새 위치로 영구적으로 이동했다. GET 또는 HEAD 요청에 대한 응답으로 이 응답을 표시하면 요청자가 자동으로 새 위치로 전달된다.

  • 302(임시 이동)
    현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다.

  • 303(기타 위치 보기)
    요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시한다. HEAD 요청 이외의 모든 요청을 다른 위치로 자동으로 전달한다.

  • 304(수정되지 않음)
    마지막 요청 이후 요청한 페이지는 수정되지 않았다. 서버가 이 응답을 표시하면 페이지의 콘텐츠를 표시하지 않는다. 요청자가 마지막으로 페이지를 요청한 후 페이지가 변경되지 않으면 이 응답(If-Modified-Since HTTP 헤더라고 함)을 표시하도록 서버를 구성해야 한다.

  • 305(프록시 사용)
    요청자는 프록시를 사용하여 요청한 페이지만 액세스할 수 있다. 서버가 이 응답을 표시하면 요청자가 사용할 프록시를 가리키는 것이기도 하다.

  • 307(임시 리다이렉션)
    현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다.

  • 308(영구 리다이렉션, RFC에서 실험적으로 승인됨)
    이것은 리소스가 이제 HTTP 응답 헤더의 Location: 에 명시된 영구히 다른 URI에 위치하고 있음을 의미합니다. 이것은 301 Moved Permanently HTTP 응답 코드와 동일한 의미를 가지고 있으며, 사용자 에이전트가 반드시 HTTP 메소드를 변경하지 말아야 하는 점만 다릅니다: 만약 첫 요청에 POST가 사용되었다면, 두번째 요청도 반드시 POST를 사용해야 합니다.

🧩4xx (요청 오류)

4xx 클래스의 상태 코드는 클라이언트에 오류가 있음을 나타낸다.

  • 400 (잘못된 요청)
    이 응답은 잘못된 문법으로 인하여 서버가 요청하여 이해할 수 없음을 의미합니다.

  • 401 (권한 없음)
    비록 HTTP 표준에서는 '미승인(unauthorized)'를 명확히 하고 있지만, 의미상 이 응답은 '비인증(unauthenticated)'를 의미합니다. 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 합니다.

  • 402 (결제 필요)
    이 응답 코드는 나중에 사용될 것을 대비해 예약되었습니다. 첫 목표로는 디지털 결제 시스템에 사용하기 위하여 만들어졌지만 지금 사용되고 있지는 않습니다.

  • 403 (금지됨)
    클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다. 예를 들어, 그들은 미승인이어서 서버는 거절을 위한 적절한 응답을 보냅니다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있습니다.

  • 404 (찾을 수 없음)
    서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다. 이것은 API에서 종점은 적절하지만 리소스 자체는 존재하지 않음을 의미할 수 있습니다. 서버들은 인증받지 않은 클라이언트로부터 리소스를 숨기기 위하여 이 응답을 403 대신에 전송할 수도 있습니다. 이 응답 코드는 웹에서 반복적으로 발생하기 때문에 가장 유명할지도 모릅니다.

  • 405 (허용되지 않는 메소드)
    요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다. 예를 들어, 어떤 API에서 리소스를 삭제하는 것을 금지할 수 있습니다. 필수적인 메소드인 GET과 HEAD는 제거될 수 없으며, 이 에러 코드를 리턴할 수 없습니다.

  • 406 (허용되지 않음)
    이 응답은 서버가 서버 주도 콘텐츠 협상을 수행한 후, 사용자 에이전트에서 정해준 규격에 따른 어떠한 콘텐츠도 찾지 않았을 때, 웹서버가 보냅니다.

  • 407 (프록시 인증 필요)
    이것은 401과 비슷하지만 프록시에 의해 완료된 인증이 필요합니다.

  • 408 (요청 시간초과)
    이 응답은 요청을 한 지 시간이 오래된 연결에 일부 서버가 전송하며, 어떤 때에는 이전에 클라이언트로부터 어떠한 요청이 없었다고 하더라도 보내지기도 합니다. 이것은 서버가 사용되지 않는 연결을 끊고 싶어하는 것을 의미합니다. 이 응답은 특정 몇몇 브라우저에서 빈번하게 보이는데 Chrome, Firefox 27+, 또는 IE 9와 같은 웹서핑 속도를 올리기 위해 HTTP 사전 연결 메카니즘을 사용하는 브라우저들이 해당됩니다. 또한 일부 서버는 이 메시지를 보내지 않고 연결을 끊어버리기도 합니다.

  • 409 (충돌)
    이 응답은 요청이 현재 서버의 상태와 충돌될 때 보냅니다.

  • 410 (사라짐)
    이 응답은 요청한 콘텐츠가 서버에서 영구적으로 삭제되었으며, 전달해 줄 수 있는 주소 역시 존재하지 않을 때 보냅니다. 클라이언트가 그들의 캐시와 리소스에 대한 링크를 지우기를 기대합니다. HTTP 기술 사양은 이 상태 코드가 '일시적인, 홍보용 서비스'에 사용되기를 기대합니다. API는 알려진 리소스가 이 상태 코드와 함께 삭제되었다고 강요해서는 안된다.

  • 411 (길이 필요)
    서버에서 필요로 하는 Content-Length 헤더 필드가 정의되지 않은 요청이 들어왔기 때문에 서버가 요청을 거절합니다.

  • 412 (사전조건 실패)
    클라이언트의 헤더에 있는 전제조건은 서버의 전제조건에 적절하지 않습니다.

  • 413 (요청 속성이 너무 큼)
    요청 엔티티는 서버에서 정의한 한계보다 큽니다. 서버는 연결을 끊거나 혹은 Retry-After 헤더 필드로 돌려보낼 것이다.

  • 414 (요청 URI가 너무 긺)
    클라이언트가 요청한 URI는 서버에서 처리하지 않기로 한 길이보다 깁니다.

  • 415 (지원되지 않는 미디어 유형)
    요청한 미디어 포맷은 서버에서 지원하지 않습니다. 서버는 해당 요청을 거절할 것입니다.

  • 416 (처리할 수 없는 요청범위)
    Range 헤더 필드에 요청한 지정 범위를 만족시킬 수 없습니다. 범위가 타겟 URI 데이터의 크기를 벗어났을 가능성이 있습니다.

  • 417 (예상 실패)
    이 응답 코드는 Expect 요청 헤더 필드로 요청한 예상이 서버에서는 적당하지 않음을 알려줍니다.

  • 421 Misdirected Request
    서버로 유도된 요청은 응답을 생성할 수 없습니다. 이것은 서버에서 요청 URI와 연결된 스킴과 권한을 구성하여 응답을 생성할 수 없을 때 보내집니다.

  • 422 (처리할 수 없는 엔티티) (WebDAV)
    요청은 잘 만들어졌지만, 문법 오류로 인하여 따를 수 없습니다.

  • 423 (잠김) (WebDAV)
    리소스는 접근하는 것이 잠겨있습니다.

  • 424 (실패된 의존성) (WebDAV)
    이전 요청이 실패하였기 때문에 지금의 요청도 실패하였습니다.

  • 426 (업그레이드 필요)
    서버는 지금의 프로토콜을 사용하여 요청을 처리하는 것을 거절하였지만, 클라이언트가 다른 프로토콜로 업그레이드를 하면 처리를 할지도 모릅니다. 서버는 Upgrade 헤더와 필요로 하는 프로토콜을 알려주기 위해 426 응답에 보냅니다.

  • 428 (전제조건 필요)
    오리진 서버는 요청이 조건적이어야 합니다. 클라이언트가 리소스를 GET해서, 수정하고, 그리고 PUT으로 서버에 돌려놓는 동안 서드파티가 서버의 상태를 수정하여 발생하는 충돌인 '업데이트 상실'을 예방하기 위한 목적입니다.

  • 429 (너무 많은 요청)
    사용자가 지정된 시간에 너무 많은 요청을 보냈습니다("rate limiting").

  • 431 (요청 헤더 필드가 너무 큼)
    요청한 헤더 필드가 너무 크기 때문에 서버는 요청을 처리하지 않을 것입니다. 요청은 크기를 줄인 다음에 다시 전송해야 합니다.

  • 451 (법적인 이유로 이용 불가)
    사용자가 요청한 것은 정부에 의해 검열된 웹페이지와 같은 불법적인 리소스입니다.

🧩5xx (서버 오류)

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

  • 500(내부 서버 오류)
    서버에 오류가 발생하여 요청을 수행할 수 없다.

  • 501(구현되지 않음)
    서버에 요청을 수행할 수 있는 기능이 없다. 예를 들어 서버가 요청 메소드를 인식하지 못할 때 이 코드를 표시한다.

  • 502 (Bad Gateway, 불량 게이트웨이)
    서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받았다.

  • 503(서비스를 사용할 수 없음)
    서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용할 수 없다. 이는 대개 일시적인 상태이다.

  • 504(게이트웨이 시간초과)
    서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못했다.

  • 505(HTTP 버전이 지원되지 않음)
    서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않는다.

서버에 내부 구성 오류가 있다. 즉, 요청을 위한 투명한 컨텐츠 협상이 순환 참조로 이어진다.

  • 507(용량 부족, WebDAV)
    서버에 내부 구성 오류가 있다. 즉, 선택한 가변 리소스는 투명한 콘텐츠 협상에 참여하도록 구성되므로 협상 프로세스의 적절한 종료 지점이 아닙니다.

  • 508(루프 감지됨, WebDAV)
    서버가 요청을 처리하는 동안 무한 루프를 감지했습니다.

  • 510(확장되지 않음)
    서버가 요청을 이행하려면 요청에 대한 추가 확장이 필요합니다.

  • 511(네트워크 인증 필요)
    511 상태 코드는 클라이언트가 네트워크 액세스를 얻기 위해 인증을 받아야 할 필요가 있음을 나타냅니다.

🧩참고자료

mdn web docs : https://developer.mozilla.org/ko/docs/Web/HTTP/Status
WhaTap : https://www.whatap.io/ko/blog/40/
위키백과 : https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

0개의 댓글