관리 메뉴

소나기

HTTP response status codes HTTP 응답 상태 코드 종류와 의미 본문

연구/Network

HTTP response status codes HTTP 응답 상태 코드 종류와 의미

moyoung 2022. 9. 29. 07:12

클라이언트는 서버로 HTTP request, 요청을 보낸다. 쉽게 설명하면, 클라이언트에서 서버로 필요한 정보를 요청한다. Google.com 이라는 웹 서버를 예로 들면, 클라이언트는 서버에 "나 웹페이지 보고 싶어 보내줘" 라고 보내고 웹 페이지는 "그래 여깄어 받아라." 라고 답장을 보내는 것이다.

 

여기서 서버가 보내는 답장에는 상태 코드, 즉 Status code가 포함되어 있다. 이 코드는 총 5개의 그룹으로 나누어지고 각각의 의미는 RFC 9110으로 지정되어 있다. 이렇게 code 를 쓰는 이유는 통신을 할때 일일이 에러의 원인을 메시지로 보내는 것보다 미리 약속된 규약으로 해당 번호를 지정하여 보내는 편이 훨씬 간편하기 때문이다.

 

* RFC 9110: https://httpwg.org/specs/rfc9110.html

 

응답 코드는 총 5개의 그룹으로 나눠진다. 아래 코드에 정의되지 않은 응답의 경우는 서버에서 커스터마이징을 하거나 자체적으로 다른 규약을 쓰는 것일 확률이 높다.

 

1. Informational responses (100–199)

2. Successful responses (200–299)

3. Redirection messages (300–399)

4. Client error responses (400–499)

5. Server error responses (500–599)

 


1. Informational responses, 정보응답 (100–199)

100 Continue

이 중간 응답은 클라이언트가 요청을 계속하거나 요청이 이미 완료된 경우 응답을 무시해야 함을 나타냅니다.

 

101 Switching Protocols

이 코드는 Upgrade클라이언트의 요청 헤더에 대한 응답으로 전송되며 서버가 전환하는 프로토콜을 나타냅니다.

 

102 Processing( WebDAV )

이 코드는 서버가 요청을 수신하여 처리 중이지만 아직 사용할 수 있는 응답이 없음을 나타냅니다.

 

103 Early Hints

이 상태 코드는 주로 Link헤더와 함께 사용하기 위한 것이며 서버가 응답을 준비하는 동안 사용자 에이전트가 리소스를 미리 로드 할 수 있도록 합니다.

 

2. Successful responses , 성공적인 응답

200 OK

요청이 성공했습니다. "성공"의 결과 의미는 HTTP 메서드에 따라 다릅니다.

 

GET: 메시지 본문에서 리소스를 가져와서 전송했습니다.

HEAD: 표현 헤더는 메시지 본문 없이 응답에 포함됩니다.

PUT또는 POST: 작업의 결과를 설명하는 리소스가 메시지 본문에서 전송됩니다.

TRACE: 메시지 본문에는 서버에서 수신한 요청 메시지가 포함됩니다.

 

201 Created

요청이 성공했으며 결과적으로 새 리소스가 생성되었습니다. 이것은 일반적으로 POST요청 또는 일부 PUT요청 후에 전송되는 응답입니다.

 

202 Accepted

요청을 받았지만 아직 처리되지 않았습니다. HTTP에는 나중에 요청 결과를 나타내는 비동기 응답을 보낼 수 있는 방법이 없기 때문에 커밋되지 않습니다. 다른 프로세스나 서버가 요청을 처리하는 경우 또는 일괄 처리를 위한 것입니다.

 

203 Non-Authoritative Information

이 응답 코드는 반환된 메타데이터가 원본 서버에서 사용 가능한 것과 정확히 동일하지 않지만 로컬 또는 타사 복사본에서 수집됨을 의미합니다. 이것은 주로 다른 리소스의 미러 또는 백업에 사용됩니다. 특정한 경우를 제외하고는 200 OK이 상태보다 응답이 우선입니다.

 

204 No Content

이 요청에 대해 보낼 콘텐츠가 없지만 헤더가 유용할 수 있습니다. 사용자 에이전트는 이 리소스에 대한 캐시된 헤더를 새 헤더로 업데이트할 수 있습니다.

 

205 Reset Content

이 요청을 보낸 문서를 재설정하도록 사용자 에이전트에 알립니다.

 

206 Partial Content

이 응답 코드는 Range리소스의 일부만 요청하기 위해 클라이언트에서 헤더를 보낼 때 사용됩니다.

 

207 Multi-Status( WebDAV )

여러 상태 코드가 적절할 수 있는 상황에 대해 여러 리소스에 대한 정보를 전달합니다.

 

208 Already Reported( WebDAV )

<dav:propstat>동일한 컬렉션에 대한 여러 바인딩의 내부 멤버를 반복적으로 열거하는 것을 피하기 위해 응답 요소 내부에서 사용됩니다 .

 

226 IM Used( HTTP 델타 인코딩 )

서버는 GET리소스에 대한 요청을 수행했으며 응답은 현재 인스턴스에 적용된 하나 이상의 인스턴스 조작 결과를 나타냅니다.

 

3. Redirection messages, 리디렉션 메시지

300 Multiple Choices

요청에 가능한 응답이 두 개 이상 있습니다. 사용자 에이전트 또는 사용자는 그 중 하나를 선택해야 합니다. (응답 중 하나를 선택하는 표준화된 방법은 없지만 사용자가 선택할 수 있도록 가능성에 대한 HTML 링크가 권장됩니다.)

 

301 Moved Permanently

요청한 리소스의 URL이 영구적으로 변경되었습니다. 새 URL이 응답에 제공됩니다.

 

302 Found

이 응답 코드는 요청한 리소스의 URI가 일시적 으로 변경되었음을 의미합니다 . 향후 URI가 추가로 변경될 수 있습니다. 따라서 클라이언트는 향후 요청에서 이 동일한 URI를 사용해야 합니다.

 

303 See Other

서버는 이 응답을 보내 클라이언트가 GET 요청으로 다른 URI에서 요청된 리소스를 가져오도록 지시했습니다.

 

304 Not Modified

이것은 캐싱 목적으로 사용됩니다. 클라이언트에 응답이 수정되지 않았음을 알리므로 클라이언트가 캐시된 동일한 버전의 응답을 계속 사용할 수 있습니다.

 

305 Use Proxy 더 이상 사용되지 않음

요청된 응답이 프록시에 의해 액세스되어야 함을 나타내기 위해 HTTP 사양의 이전 버전에서 정의되었습니다. 프록시의 대역 내 구성과 관련된 보안 문제로 인해 더 이상 사용되지 않습니다.

 

306 unused

이 응답 코드는 더 이상 사용되지 않습니다. 그것은 단지 예약되어 있습니다. 이전 버전의 HTTP/1.1 사양에서 사용되었습니다.

 

307 Temporary Redirect

서버는 이 응답을 전송하여 클라이언트가 이전 요청에서 사용된 것과 동일한 방법으로 다른 URI에서 요청된 리소스를 가져오도록 지시합니다. 이것은 사용자 에이전트가 사용된 HTTP 메소드를 변경 해서는302 Found 안 된다는 점을 제외하고는 HTTP 응답 코드와 동일한 의미를 갖습니다 . a가 첫 번째 요청에서 사용된 경우 두 번째 요청에서 a 를 사용해야 합니다. POSTPOST

 

308 Permanent Redirect

이는 리소스가 이제 Location:HTTP 응답 헤더로 지정된 다른 URI에 영구적으로 위치한다는 것을 의미합니다. 이것은 사용자 에이전트가 사용된 HTTP 메소드를 변경 해서는301 Moved Permanently 안 된다는 점을 제외하고는 HTTP 응답 코드와 동일한 의미를 갖습니다 . a가 첫 번째 요청에서 사용된 경우 두 번째 요청에서 a 를 사용해야 합니다. POSTPOST

 

4. Client error responses, 클라이언트 오류 응답

 

400 Bad Request

서버는 클라이언트 오류로 인식되는 것으로 인해 요청을 처리할 수 없거나 처리하지 않습니다(예: 잘못된 요청 구문, 잘못된 요청 메시지 프레이밍 또는 사기성 요청 라우팅).

 

401 Unauthorized

HTTP 표준이 "인증되지 않음"을 지정하지만 의미상 이 응답은 "인증되지 않음"을 의미합니다. 즉, 클라이언트는 요청된 응답을 얻기 위해 자신을 인증해야 합니다.

 

402 Payment Required 실험적

이 응답 코드는 향후 사용을 위해 예약되어 있습니다. 이 코드를 만드는 초기 목표는 디지털 결제 시스템에 사용하는 것이지만 이 상태 코드는 매우 드물게 사용되며 표준 규칙이 없습니다.

 

403 Forbidden

클라이언트는 콘텐츠에 대한 액세스 권한이 없습니다. 즉, 권한이 없으므로 서버가 요청된 리소스를 제공하는 것을 거부합니다. 와 달리 401 Unauthorized클라이언트의 ID는 서버에 알려져 있습니다.

 

404 Not Found

서버가 요청한 리소스를 찾을 수 없습니다. 브라우저에서 이는 URL이 인식되지 않음을 의미합니다. API에서 이는 엔드포인트가 유효하지만 리소스 자체가 존재하지 않음을 의미할 수도 있습니다. 403 Forbidden서버는 권한이 없는 클라이언트로부터 리소스의 존재를 숨기는 대신 이 응답을 보낼 수도 있습니다 . 이 응답 코드는 웹에서 자주 발생하기 때문에 아마도 가장 잘 알려져 있을 것입니다.

 

405 Method Not Allowed

요청 방법은 서버에서 알고 있지만 대상 리소스에서 지원하지 않습니다. 예를 들어 API는 DELETE리소스 제거를 위한 호출을 허용하지 않을 수 있습니다.

 

406 Not Acceptable

이 응답은 웹 서버가 서버 기반 콘텐츠 협상 을 수행한 후 사용자 에이전트가 제공한 기준에 맞는 콘텐츠를 찾지 못할 때 전송됩니다.

 

407 Proxy Authentication Required

이는 유사 401 Unauthorized하지만 프록시에서 인증을 수행해야 합니다.

 

408 Request Timeout

이 응답은 클라이언트의 이전 요청이 없더라도 일부 서버의 유휴 연결에서 전송됩니다. 이는 서버가 이 사용되지 않는 연결을 종료하려고 함을 의미합니다. 이 응답은 Chrome, Firefox 27+ 또는 IE9와 같은 일부 브라우저에서 HTTP 사전 연결 메커니즘을 사용하여 서핑 속도를 높이기 때문에 훨씬 더 많이 사용됩니다. 또한 일부 서버는 이 메시지를 보내지 않고 연결을 종료합니다.

 

409 Conflict

이 응답은 요청이 서버의 현재 상태와 충돌할 때 전송됩니다.

 

410 Gone

이 응답은 요청된 콘텐츠가 전달 주소 없이 서버에서 영구적으로 삭제되었을 때 전송됩니다. 클라이언트는 캐시와 리소스 링크를 제거해야 합니다. HTTP 사양은 이 상태 코드가 "한정된 프로모션 서비스"에 사용되도록 의도하고 있습니다. API는 이 상태 코드로 삭제된 리소스를 나타내도록 강요되어서는 안 됩니다.

 

411 Length Required

Content-Length헤더 필드가 정의되어 있지 않고 서버 에서 요구하기 때문에 서버에서 요청을 거부 했습니다.

 

412 Precondition Failed

클라이언트가 헤더에 서버가 충족하지 않는 전제 조건을 표시했습니다.

 

413 Payload Too Large

요청 엔터티가 서버에서 정의한 제한보다 큽니다. 서버가 연결을 닫거나 Retry-After헤더 필드를 반환할 수 있습니다.

 

414 URI Too Long

클라이언트가 요청한 URI가 서버가 해석할 수 있는 것보다 깁니다.

 

415 Unsupported Media Type

요청한 데이터의 미디어 형식이 서버에서 지원되지 않아 서버가 요청을 거부하고 있습니다.

 

416 Range Not Satisfiable

요청 의 헤더 필드에 지정된 범위 Range를 충족할 수 없습니다. 범위가 대상 URI의 데이터 크기를 벗어날 수 있습니다.

 

417 Expectation Failed

Expect이 응답 코드는 요청 헤더 필드 에 표시된 기대치를 서버에서 충족할 수 없음을 의미합니다.

 

418 I'm a teapot

서버가 찻주전자로 커피를 내리려는 시도를 거부합니다.

 

421 Misdirected Request

요청이 응답을 생성할 수 없는 서버로 전달되었습니다. 이것은 요청 URI에 포함된 체계와 권한의 조합에 대한 응답을 생성하도록 구성되지 않은 서버에서 보낼 수 있습니다.

 

422 Unprocessable Entity( WebDAV )

요청의 형식은 적절했지만 의미 오류로 인해 따를 수 없었습니다.

 

423 Locked( WebDAV )

액세스 중인 리소스가 잠겨 있습니다.

 

424 Failed Dependency( WebDAV )

이전 요청의 실패로 인해 요청이 실패했습니다.

 

425 Too Early 실험적

서버가 재생될 수 있는 요청을 처리하는 위험을 감수하지 않음을 나타냅니다.

 

426 Upgrade Required

서버는 현재 프로토콜을 사용하여 요청을 수행하는 것을 거부하지만 클라이언트가 다른 프로토콜로 업그레이드한 후에 기꺼이 수행할 수 있습니다. 서버는 Upgrade필요한 프로토콜을 나타내기 위해 426 응답으로 헤더를 보냅니다.

 

428 Precondition Required

원본 서버는 조건부 요청을 요구합니다. 이 응답은 제3자가 서버의 상태를 수정하여 충돌을 일으키는 동안 클라이언트 GETsa 리소스의 상태를 수정하고 서버로 다시 보내는 '업데이트 손실' 문제를 방지하기 위한 것 입니다.PUT

 

429 Too Many Requests

사용자가 주어진 시간 동안 너무 많은 요청을 보냈습니다("속도 제한").

 

431 Request Header Fields Too Large

헤더 필드가 너무 커서 서버가 요청을 처리하지 않습니다. 요청 헤더 필드의 크기를 줄인 후 요청을 다시 제출할 수 있습니다.

 

451 Unavailable For Legal Reasons

사용자 에이전트가 정부에서 검열한 웹 페이지와 같이 법적으로 제공할 수 없는 리소스를 요청했습니다.

 

5. Server error responses, 서버 오류 응답

500 Internal Server Error

서버가 처리 방법을 모르는 상황에 직면했습니다.

 

501 Not Implemented

요청 방법은 서버에서 지원하지 않으며 처리할 수 없습니다. 서버가 지원해야 하는 유일한 메서드(따라서 이 코드를 반환하지 않아야 함)는 GET및 HEAD입니다.

 

502 Bad Gateway

이 오류 응답은 서버가 요청을 처리하는 데 필요한 응답을 얻기 위해 게이트웨이로 작동하는 동안 잘못된 응답을 받았음을 의미합니다.

 

503 Service Unavailable

서버가 요청을 처리할 준비가 되지 않았습니다. 일반적인 원인은 유지 관리를 위해 다운되거나 과부하된 서버입니다. 이 응답과 함께 문제를 설명하는 사용자 친화적인 페이지를 보내야 합니다. 이 응답은 임시 조건에 Retry-After사용해야 하며 HTTP 헤더에는 가능한 경우 서비스 복구 전 예상 시간이 포함되어야 합니다. 이러한 임시 조건 응답은 일반적으로 캐시되지 않아야 하므로 웹마스터는 이 응답과 함께 전송되는 캐싱 관련 헤더에 대해서도 주의를 기울여야 합니다.

 

504 Gateway Timeout

이 오류 응답은 서버가 게이트웨이 역할을 하고 제 시간에 응답을 받을 수 없을 때 제공됩니다.

 

505 HTTP Version Not Supported

요청에 사용된 HTTP 버전은 서버에서 지원하지 않습니다.

 

506 Variant Also Negotiates

서버에 내부 구성 오류가 있습니다. 선택한 변형 리소스가 투명한 콘텐츠 협상 자체에 참여하도록 구성되어 있으므로 협상 프로세스의 적절한 끝점이 아닙니다.

 

507 Insufficient Storage( WebDAV )

서버가 요청을 성공적으로 완료하는 데 필요한 표현을 저장할 수 없기 때문에 리소스에서 메서드를 수행할 수 없습니다.

 

508 Loop Detected( WebDAV )

서버가 요청을 처리하는 동안 무한 루프를 감지했습니다.

 

510 Not Extended

서버가 이를 수행하려면 요청에 대한 추가 확장이 필요합니다.

 

511 Network Authentication Required

클라이언트가 네트워크 액세스 권한을 얻기 위해 인증해야 함을 나타냅니다.

 

 

출처: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

 

HTTP response status codes - HTTP | MDN

HTTP response status codes indicate whether a specific HTTP request has been successfully completed. Responses are grouped in five classes:

developer.mozilla.org

 

 

 

 

 

Comments