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