HTTPQUERY
한국어

203 Non-Authoritative Information

사용법

203 Non-Authoritative Information 상태 코드는 우선 요청이 성공했음을 확인해 줍니다. 원래의 상태 코드는 보존되지 않습니다. 클라이언트는 오리진이 200을 반환했는지, 201을 반환했는지, 아니면 다른 성공 코드를 반환했는지 알아낼 방법이 없습니다.

참고

이런 이유로 203 Non-Authoritative Information 상태 코드는 권장되지 않는 경우가 있습니다. 지금은 폐기된, 코드 214(Transformation Applied)를 갖는 Warning 헤더가 한때 대안 역할을 하여, 원래 상태 코드를 보존하면서 변환이 일어났음을 알렸습니다. Warning 헤더는 HTTP 표준에서 제거되었습니다.

예시

클라이언트가 중간 프록시 서버를 거쳐 리소스를 요청합니다. 오리진 서버는 해당 리소스를 평문 텍스트로 저장하고 있습니다. 프록시는 응답을 클라이언트로 전달하기 전에 리소스를 JSON 형식으로 변환합니다.

요청

GET /instructions HTTP/1.1
Host: example.com

오리진의 응답

HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Content-Length: 250

<message body in text format>

프록시가 클라이언트에 보내는 응답

HTTP/1.1 203 Non-Authoritative Information
Content-Type: application/json
Content-Length: 265

{"response":"<message body embedded in JSON>"}

대안적 접근(레거시)

폐기됨

Warning 헤더는 폐기되어 이제는 레거시입니다. 이 방식은 새로운 구현에는 권장되지 않습니다.

203 Non-Authoritative Information 상태 코드를 사용하는 대신, 프록시가 코드 214(Transformation Applied)를 갖는 Warning 헤더를 추가하여 원래의 상태 코드를 보존합니다.

Warning 헤더를 사용하는 프록시의 응답

HTTP/1.1 200 OK
Content-Type: application/json
Warning: 214 proxy.example.re "Response converted to JSON format"
Content-Length: 265

{"response":"<message body embedded in JSON>"}

203 Non-Authoritative Information 상태 코드 대신 Warning 헤더를 사용하면 원래의 상태 코드가 보존되고, 클라이언트는 그에 맞게 응답을 처리합니다.

코드 참고

.NET

HttpStatusCode.NonAuthoritativeInformation

Rust

http::StatusCode::NON_AUTHORITATIVE_INFORMATION

Rails

:non_authoritative_information

Go

http.StatusNonAuthoritativeInfo

Symfony

Response::HTTP_NON_AUTHORITATIVE_INFORMATION

Python3.5+

http.HTTPStatus.NON_AUTHORITATIVE_INFORMATION

Java

java.net.HttpURLConnection.HTTP_NOT_AUTHORITATIVE

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_NON_AUTHORITATIVE_INFORMATION

Angular

@angular/common/http/HttpStatusCode.NonAuthoritativeInformation