Aller au contenu principal

5 5.Warning

Le champ d'en-tête "Warning" est utilisé pour transporter des informations supplémentaires sur l'état ou la transformation d'un message qui pourraient ne pas être reflétées dans le code d'état. Ces informations sont généralement utilisées pour avertir d'une possible inexactitude introduite par des opérations de mise en cache ou des transformations appliquées à la charge utile du message.

Les avertissements peuvent être utilisés à d'autres fins, liées au cache ou autrement. L'utilisation d'un avertissement, plutôt qu'un code d'état d'erreur, distingue ces réponses des véritables échecs.

Les champs d'en-tête Warning peuvent généralement être appliqués à n'importe quel message. Cependant, certains warn-codes sont spécifiques aux caches et ne peuvent être générés que par un cache lors de la validation d'une entrée en cache.

Warning = 1#warning-value

warning-value = warn-code SP warn-agent SP warn-text
[ SP warn-date ]

warn-code = 3DIGIT
warn-agent = ( uri-host [ ":" port ] ) / pseudonym
; le nom ou pseudonyme du serveur ajoutant
; le champ d'en-tête Warning, pour le débogage.
; Un pseudonyme DEVRAIT (SHOULD) être le nom d'hôte généré.
warn-text = quoted-string
warn-date = DQUOTE HTTP-date DQUOTE

Plusieurs avertissements peuvent être attachés à une réponse (soit par le serveur d'origine, soit par un cache), y compris plusieurs avertissements avec le même numéro de code, ne différant que par warn-text.

Un agent utilisateur qui reçoit un ou plusieurs champs d'en-tête Warning DEVRAIT (SHOULD) informer l'utilisateur d'autant d'entre eux que possible, dans l'ordre où ils apparaissent dans la réponse.

Cette spécification définit les warn-codes décrits ci-dessous. Le "Warn Code Registry" situé à http://www.iana.org/assignments/http-warn-codes est la source faisant autorité pour les valeurs de warn-code et leurs significations.

Tout serveur ou cache PEUT (MAY) générer un champ d'en-tête Warning dans une réponse. Les avertissements se voient attribuer des warn-codes à trois chiffres. Le premier chiffre indique si l'avertissement doit être supprimé d'une réponse stockée après validation :

  • Un warn-code de 1xx indique un avertissement qui décrit l'état de fraîcheur ou de validation de la réponse, et il DOIT (MUST) donc être supprimé après une validation réussie. Un warn-code 1xx NE DOIT PAS (MUST NOT) être généré si une validation est effectuée, que la validation modifie ou non la durée de vie de fraîcheur de la réponse.

  • Un warn-code de 2xx indique un avertissement qui décrit certains aspects de la représentation qui ne sont pas rectifiés par une validation (par exemple, une compression avec perte de la représentation) et il NE DOIT donc PAS (MUST NOT) être supprimé après validation, sauf si le contenu complet de la réponse change (c'est-à-dire que l'étiquette d'entité associée à la réponse change), auquel cas il DOIT (MUST) être supprimé.

Lorsqu'un warn-code 1xx est envoyé avec une réponse périmée, il DEVRAIT (SHOULD) être envoyé chaque fois qu'un cache envoie une réponse périmée, même si le même avertissement a été envoyé auparavant.

Lorsqu'un warn-code 2xx est envoyé, il DEVRAIT (SHOULD) être envoyé chaque fois qu'un cache envoie la réponse associée, même si le même avertissement a déjà été envoyé.

Si une implémentation envoie un message avec un ou plusieurs en-têtes Warning dont la version est HTTP/1.0 ou inférieure, alors l'émetteur DOIT (MUST) inclure dans chaque warning-value un warn-date qui correspond au champ d'en-tête Date dans la réponse.

Si une implémentation reçoit un message avec un warning-value qui inclut un warn-date, et que ce warn-date est différent de la valeur Date dans la réponse, alors ce warning-value DOIT (MUST) être supprimé du message avant de le stocker, de le transmettre ou de l'utiliser. Cela empêche les mauvaises conséquences de la mise en cache naïve des champs d'en-tête Warning.

Si tous les warning-values sont supprimés pour cette raison, le champ d'en-tête Warning DOIT (MUST) également être supprimé.