HTTPQUERY
Français

203 Non-Authoritative Information

Utilisation

Le code de statut 203 Non-Authoritative Information confirme d’abord que la requête a abouti. Le code de statut d’origine n’est pas conservé. Le client n’a aucun moyen de déterminer si le serveur d’origine a renvoyé 200, 201 ou un autre code de succès.

Remarque

Pour cette raison, l’usage du code de statut 203 Non-Authoritative Information est parfois déconseillé. L’en-tête Warning, aujourd’hui obsolète, avec le code 214 (Transformation Applied), a servi d’alternative : il signalait une transformation tout en conservant le code de statut d’origine. L’en-tête Warning a été retiré du standard HTTP.

Exemple

Le client demande une ressource à travers un serveur proxy intermédiaire. Le serveur d’origine stocke la ressource en texte brut. Le proxy convertit la ressource au format JSON avant de transmettre la réponse au client.

Requête

GET /instructions HTTP/1.1
Host: example.com

Réponse du serveur d’origine

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

<message body in text format>

Réponse du proxy au client

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

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

Approche alternative (héritée)

Obsolète

L’en-tête Warning a été rendu obsolète et relève désormais de l’héritage. Cette approche n’est pas recommandée pour les nouvelles implémentations.

Au lieu d’utiliser le code de statut 203 Non-Authoritative Information, le proxy ajoute un en-tête Warning avec le code 214 (Transformation Applied), ce qui conserve le code de statut d’origine.

Réponse du proxy utilisant l’en-tête 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>"}

Lorsqu’un en-tête Warning est utilisé à la place du code de statut 203 Non-Authoritative Information, le code de statut d’origine est conservé et le client traite la réponse en conséquence.

Références de code

.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