Zum Hauptinhalt springen

5 5.Warning

Das "Warning"-Header-Feld wird verwendet, um zusätzliche Informationen über den Status oder die Transformation einer Nachricht zu übermitteln, die möglicherweise nicht im Statuscode widergespiegelt werden. Diese Informationen werden typischerweise verwendet, um vor möglichen Ungenauigkeiten zu warnen, die durch Caching-Operationen oder auf die Payload der Nachricht angewendete Transformationen eingeführt wurden.

Warnungen können für andere Zwecke verwendet werden, sowohl cache-bezogen als auch anderweitig. Die Verwendung einer Warnung anstelle eines Fehlerstatuscodes unterscheidet diese Antworten von echten Fehlern.

Warning-Header-Felder können im Allgemeinen auf jede Nachricht angewendet werden. Einige Warn-Codes sind jedoch cachespezifisch und können nur von einem Cache beim Validieren eines Cache-Eintrags generiert werden.

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
; der Name oder das Pseudonym des Servers, der das
; Warning-Header-Feld hinzufügt, zur Verwendung beim Debuggen.
; Ein Pseudonym SOLLTE (SHOULD) der generierte Hostname sein.
warn-text = quoted-string
warn-date = DQUOTE HTTP-date DQUOTE

Mehrere Warnungen können an eine Antwort angehängt werden (entweder vom Ursprungsserver oder von einem Cache), einschließlich mehrerer Warnungen mit derselben Codenummer, die sich nur in warn-text unterscheiden.

Ein User-Agent, der ein oder mehrere Warning-Header-Felder empfängt, SOLLTE (SHOULD) den Benutzer über so viele davon wie möglich informieren, in der Reihenfolge, in der sie in der Antwort erscheinen.

Diese Spezifikation definiert die unten beschriebenen Warn-Codes. Das "Warn Code Registry" unter http://www.iana.org/assignments/http-warn-codes ist die autoritative Quelle für Warn-Code-Werte und ihre Bedeutungen.

Jeder Server oder Cache DARF (MAY) ein Warning-Header-Feld in einer Antwort generieren. Warnungen werden dreistellige Warn-Codes zugewiesen. Die erste Ziffer gibt an, ob die Warnung nach der Validierung aus einer gespeicherten Antwort gelöscht werden muss:

  • Ein Warn-Code von 1xx zeigt eine Warnung an, die den Frische- oder Validierungsstatus der Antwort beschreibt, und muss daher nach einer erfolgreichen Validierung gelöscht werden (MUST). Ein 1xx-Warn-Code DARF NICHT (MUST NOT) generiert werden, wenn eine Validierung durchgeführt wird, unabhängig davon, ob die Validierung die Frischelebensdauer der Antwort ändert oder nicht.

  • Ein Warn-Code von 2xx zeigt eine Warnung an, die einen Aspekt der Darstellung beschreibt, der nicht durch eine Validierung behoben wird (z. B. eine verlustbehaftete Kompression der Darstellung), und darf daher nach der Validierung NICHT gelöscht werden (MUST NOT), es sei denn, der gesamte Antwortinhalt ändert sich (d. h., das mit der Antwort verbundene Entity-Tag ändert sich), in diesem Fall MUSS er gelöscht werden (MUST).

Wenn ein 1xx-Warn-Code mit einer veralteten Antwort gesendet wird, SOLLTE er (SHOULD) jedes Mal gesendet werden, wenn ein Cache eine veraltete Antwort sendet, auch wenn dieselbe Warnung zuvor gesendet wurde.

Wenn ein 2xx-Warn-Code gesendet wird, SOLLTE er (SHOULD) jedes Mal gesendet werden, wenn ein Cache die zugehörige Antwort sendet, auch wenn dieselbe Warnung bereits gesendet wurde.

Wenn eine Implementierung eine Nachricht mit einem oder mehreren Warning-Headern sendet, deren Version HTTP/1.0 oder niedriger ist, MUSS (MUST) der Absender in jedem warning-value ein warn-date einschließen, das mit dem Date-Header-Feld in der Antwort übereinstimmt.

Wenn eine Implementierung eine Nachricht mit einem warning-value empfängt, das ein warn-date enthält, und dieses warn-date vom Date-Wert in der Antwort abweicht, MUSS (MUST) dieses warning-value aus der Nachricht gelöscht werden, bevor es gespeichert, weitergeleitet oder verwendet wird. Dies verhindert schlechte Folgen des naiven Cachings von Warning-Header-Feldern.

Wenn alle warning-values aus diesem Grund gelöscht werden, MUSS (MUST) auch das Warning-Header-Feld gelöscht werden.