203 Non-Authoritative Information
Verwendung
Der Statuscode 203 Non-Authoritative Information bestätigt zunächst, dass die Anfrage erfolgreich war. Der ursprüngliche Statuscode bleibt dabei nicht erhalten. Der Client hat keine Möglichkeit festzustellen, ob der Origin-Server 200, 201 oder einen anderen Erfolgscode zurückgegeben hat.
Hinweis
Aus diesem Grund wird vom Statuscode 203 Non-Authoritative Information mitunter abgeraten. Der inzwischen überholte Warning-Header mit dem Code 214 (Transformation Applied) diente einst als Alternative: Er signalisierte eine Transformation und bewahrte zugleich den ursprünglichen Statuscode. Der Warning-Header wurde aus dem HTTP-Standard entfernt.
Beispiel
Der Client fordert eine Ressource über einen zwischengeschalteten Proxy-Server an. Der Origin-Server speichert die Ressource als reinen Text. Der Proxy wandelt die Ressource in das JSON-Format um, bevor er die Antwort an den Client weiterleitet.
Anfrage
GET /instructions HTTP/1.1
Host: example.com
Antwort vom Origin-Server
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Content-Length: 250
<message body in text format>
Antwort des Proxys an den Client
HTTP/1.1 203 Non-Authoritative Information
Content-Type: application/json
Content-Length: 265
{"response":"<message body embedded in JSON>"}
Alternativer Ansatz (veraltet)
Überholt
Der Warning-Header wurde für überholt erklärt und gilt heute als Altlast. Dieser Ansatz wird für neue Implementierungen nicht empfohlen.
Statt den Statuscode 203 Non-Authoritative Information zu verwenden, fügt der Proxy einen Warning-Header mit dem Code 214 (Transformation Applied) hinzu und bewahrt damit den ursprünglichen Statuscode.
Antwort des Proxys unter Verwendung des Warning-Headers
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>"}
Wird anstelle des Statuscodes 203 Non-Authoritative Information ein Warning-Header verwendet, bleibt der ursprüngliche Statuscode erhalten und der Client verarbeitet die Antwort entsprechend.
Code-Referenzen
.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