Zum Hauptinhalt springen

5.5. Warning (警告)

🇬🇧 English

The "Warning" header field is used to carry additional information about the status or transformation of a message that might not be reflected in the status code. This information is typically used to warn about possible incorrectness introduced by caching operations or transformations applied to the payload of the message.

Warnings can be used for other purposes, both cache-related and otherwise. The use of a warning, rather than an error status code, distinguishes these responses from true failures.

Warning header fields can in general be applied to any message. However, some warn-codes are specific to caches and can only be generated by a cache when validating a cached entry.

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
; the name or pseudonym of the server adding
; the Warning header field, for use in debugging.
; A pseudonym SHOULD be the generated hostname.
warn-text = quoted-string
warn-date = DQUOTE HTTP-date DQUOTE

Multiple warnings can be attached to a response (either by the origin server or by a cache), including multiple warnings with the same code number, only differing in warn-text.

A user agent that receives one or more Warning header fields SHOULD inform the user of as many of them as possible, in the order that they appear in the response.

This specification defines the warn-codes described below. The "Warn Code Registry" located at http://www.iana.org/assignments/http-warn-codes is the authoritative source for warn-code values and their meanings.

Any server or cache MAY generate a Warning header field in a response. Warnings are assigned three digit warn-codes. The first digit indicates whether the Warning is required to be deleted from a stored response after validation:

  • A warn-code of 1xx indicates a Warning that describes the freshness or validation status of the response, and so it MUST be deleted after a successful validation. A 1xx warn-code MUST NOT be generated if a validation is performed, regardless of whether or not the validation changes the freshness lifetime of the response.

  • A warn-code of 2xx indicates a Warning that describes some aspect of the representation that is not rectified by a validation (for example, a lossy compression of the representation) and so it MUST NOT be deleted after validation, unless the full response content changes (i.e., the entity-tag associated with the response changes), in which case it MUST be deleted.

When a 1xx warn-code is sent with a stale response, it SHOULD be sent every time a cache sends a stale response, even if the same warning was sent before.

When a 2xx warn-code is sent, it SHOULD be sent every time a cache sends the associated response, even if the same warning has already been sent.

If an implementation sends a message with one or more Warning headers whose version is HTTP/1.0 or lower, then the sender MUST include in each warning-value a warn-date that matches the Date header field in the response.

If an implementation receives a message with a warning-value that includes a warn-date, and that warn-date is different from the Date value in the response, then that warning-value MUST be deleted from the message before storing, forwarding, or using it. This prevents bad consequences of naive caching of Warning header fields.

If all of the warning-values are deleted for this reason, the Warning header field MUST be deleted as well.


🇨🇳 中文

"Warning"头字段用于携带有关消息状态或转换的附加信息,这些信息可能未反映在状态码中。此信息通常用于警告缓存操作或应用于消息有效载荷的转换可能引入的错误。

警告可用于其他目的,包括与缓存相关和其他目的。使用警告而不是错误状态码,将这些响应与真正的失败区分开来。

警告头字段通常可以应用于任何消息。但是,某些warn-code特定于缓存,只能由缓存在验证缓存条目时生成。

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
; 添加Warning头字段的服务器的名称或假名,
; 用于调试。
; 假名应该 (SHOULD) 是生成的主机名。
warn-text = quoted-string
warn-date = DQUOTE HTTP-date DQUOTE

多个警告可以附加到响应(由源服务器或缓存),包括具有相同代码编号但仅warn-text不同的多个警告。

接收一个或多个Warning头字段的用户代理应该 (SHOULD) 按照它们在响应中出现的顺序通知用户尽可能多的警告。

本规范定义了下述warn-code。位于 http://www.iana.org/assignments/http-warn-codes 的"Warn Code Registry"是warn-code值及其含义的权威来源。

任何服务器或缓存都可以 (MAY) 在响应中生成Warning头字段。警告被分配三位数的warn-code。第一位数字表示在验证后是否必须从存储的响应中删除警告:

  • 1xx的warn-code表示描述响应的新鲜度或验证状态的警告,因此在成功验证后必须 (MUST) 删除它。无论验证是否改变响应的新鲜度生命周期,如果执行了验证,则不得 (MUST NOT) 生成1xx warn-code。

  • 2xx的warn-code表示描述表示的某些方面的警告,这些方面不会通过验证来纠正(例如,表示的有损压缩),因此在验证后不得 (MUST NOT) 删除它,除非完整响应内容发生变化(即,与响应关联的实体标签发生变化),在这种情况下必须 (MUST) 删除它。

当1xx warn-code与过期响应一起发送时,每次缓存发送过期响应时都应该 (SHOULD) 发送它,即使之前已发送相同的警告。

当发送2xx warn-code时,每次缓存发送关联的响应时都应该 (SHOULD) 发送它,即使已经发送了相同的警告。

如果实现发送的消息包含一个或多个版本为HTTP/1.0或更低的Warning头,则发送方必须 (MUST) 在每个warning-value中包含与响应中Date头字段匹配的warn-date。

如果实现接收到包含warn-date的warning-value的消息,并且该warn-date与响应中的Date值不同,则在存储、转发或使用该消息之前,必须 (MUST) 从消息中删除该warning-value。这可以防止Warning头字段的简单缓存造成的不良后果。

如果出于此原因删除了所有warning-value,则也必须 (MUST) 删除Warning头字段。


🇯🇵 日本語

"Warning"ヘッダーフィールドは、ステータスコードに反映されない可能性があるメッセージのステータスまたは変換に関する追加情報を伝えるために使用される。この情報は通常、キャッシング操作またはメッセージのペイロードに適用される変換によって導入される可能性のある不正確さについて警告するために使用される。

警告は、キャッシュ関連およびその他の目的を含む他の目的にも使用できる。エラーステータスコードではなく警告を使用することで、これらのレスポンスを真の失敗と区別する。

警告ヘッダーフィールドは一般的に任意のメッセージに適用できる。ただし、一部のwarn-codeはキャッシュ固有であり、キャッシュエントリを検証する際にキャッシュによってのみ生成できる。

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
; Warningヘッダーフィールドを追加するサーバーの
; 名前または仮名、デバッグに使用される。
; 仮名は生成されたホスト名であるべきである (SHOULD)。
warn-text = quoted-string
warn-date = DQUOTE HTTP-date DQUOTE

複数の警告をレスポンスに添付できる(オリジンサーバーまたはキャッシュによって)、同じコード番号を持つ複数の警告を含め、warn-textのみが異なる。

1つ以上のWarningヘッダーフィールドを受信したユーザーエージェントは、レスポンスに現れる順序で、できるだけ多くの警告をユーザーに通知すべきである (SHOULD)。

この仕様では、以下に説明するwarn-codeを定義する。http://www.iana.org/assignments/http-warn-codes にある"Warn Code Registry"は、warn-code値とその意味の権威ある情報源である。

任意のサーバーまたはキャッシュは、レスポンスでWarningヘッダーフィールドを生成してもよい (MAY)。警告には3桁のwarn-codeが割り当てられる。最初の桁は、検証後に保存されたレスポンスから警告を削除する必要があるかどうかを示す:

  • 1xxのwarn-codeは、レスポンスの鮮度または検証ステータスを説明する警告を示すため、検証が成功した後に削除しなければならない (MUST)。検証がレスポンスの鮮度有効期間を変更するかどうかに関係なく、検証が実行された場合、1xxのwarn-codeを生成してはならない (MUST NOT)。

  • 2xxのwarn-codeは、検証によって修正されない表現の何らかの側面(例えば、表現の非可逆圧縮)を説明する警告を示すため、検証後に削除してはならない (MUST NOT)。ただし、完全なレスポンスコンテンツが変更された場合(つまり、レスポンスに関連付けられたエンティティタグが変更された場合)、その場合は削除しなければならない (MUST)。

1xxのwarn-codeが古いレスポンスと共に送信される場合、キャッシュが古いレスポンスを送信するたびに送信されるべきであり (SHOULD)、以前に同じ警告が送信された場合でも同様である。

2xxのwarn-codeが送信される場合、キャッシュが関連するレスポンスを送信するたびに送信されるべきであり (SHOULD)、すでに同じ警告が送信されている場合でも同様である。

実装がバージョンがHTTP/1.0以下の1つ以上のWarningヘッダーを含むメッセージを送信する場合、送信者は各warning-valueにレスポンスのDateヘッダーフィールドと一致するwarn-dateを含めなければならない (MUST)。

実装がwarn-dateを含むwarning-valueを含むメッセージを受信し、そのwarn-dateがレスポンスのDate値と異なる場合、そのwarning-valueは、保存、転送、または使用する前にメッセージから削除しなければならない (MUST)。これにより、Warningヘッダーフィールドの単純なキャッシングの悪影響を防ぐ。

この理由ですべてのwarning-valueが削除された場合、Warningヘッダーフィールドも削除しなければならない (MUST)。


🇫🇷 Français

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é.


🇩🇪 Deutsch

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.


🇮🇹 Italiano

Il campo di intestazione "Warning" viene utilizzato per trasportare informazioni aggiuntive sullo stato o sulla trasformazione di un messaggio che potrebbero non essere riflesse nel codice di stato. Queste informazioni sono tipicamente utilizzate per avvisare di possibili inesattezze introdotte da operazioni di caching o trasformazioni applicate al payload del messaggio.

Gli avvisi possono essere utilizzati per altri scopi, sia relativi alla cache che altrimenti. L'uso di un avviso, piuttosto che un codice di stato di errore, distingue queste risposte dai veri fallimenti.

I campi di intestazione Warning possono in generale essere applicati a qualsiasi messaggio. Tuttavia, alcuni warn-codes sono specifici per le cache e possono essere generati solo da una cache durante la validazione di una voce in 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
; il nome o pseudonimo del server che aggiunge
; il campo di intestazione Warning, per uso nel debugging.
; Uno pseudonimo DOVREBBE (SHOULD) essere il nome host generato.
warn-text = quoted-string
warn-date = DQUOTE HTTP-date DQUOTE

Più avvisi possono essere allegati a una risposta (sia dal server di origine che da una cache), inclusi più avvisi con lo stesso numero di codice, differenziandosi solo in warn-text.

Un agente utente che riceve uno o più campi di intestazione Warning DOVREBBE (SHOULD) informare l'utente di quanti più possibile, nell'ordine in cui appaiono nella risposta.

Questa specifica definisce i warn-codes descritti di seguito. Il "Warn Code Registry" situato a http://www.iana.org/assignments/http-warn-codes è la fonte autorevole per i valori di warn-code e i loro significati.

Qualsiasi server o cache PUÒ (MAY) generare un campo di intestazione Warning in una risposta. Gli avvisi ricevono warn-codes a tre cifre. La prima cifra indica se l'avviso deve essere eliminato da una risposta memorizzata dopo la validazione:

  • Un warn-code di 1xx indica un avviso che descrive lo stato di freschezza o validazione della risposta, e quindi DEVE (MUST) essere eliminato dopo una validazione riuscita. Un warn-code 1xx NON DEVE (MUST NOT) essere generato se viene eseguita una validazione, indipendentemente dal fatto che la validazione modifichi o meno la durata di freschezza della risposta.

  • Un warn-code di 2xx indica un avviso che descrive alcuni aspetti della rappresentazione che non sono rettificati da una validazione (ad esempio, una compressione con perdita della rappresentazione) e quindi NON DEVE (MUST NOT) essere eliminato dopo la validazione, a meno che il contenuto completo della risposta non cambi (cioè, l'etichetta di entità associata alla risposta cambi), nel qual caso DEVE (MUST) essere eliminato.

Quando un warn-code 1xx viene inviato con una risposta obsoleta, DOVREBBE (SHOULD) essere inviato ogni volta che una cache invia una risposta obsoleta, anche se lo stesso avviso è stato inviato in precedenza.

Quando viene inviato un warn-code 2xx, DOVREBBE (SHOULD) essere inviato ogni volta che una cache invia la risposta associata, anche se lo stesso avviso è già stato inviato.

Se un'implementazione invia un messaggio con uno o più intestazioni Warning la cui versione è HTTP/1.0 o inferiore, allora il mittente DEVE (MUST) includere in ogni warning-value un warn-date che corrisponda al campo di intestazione Date nella risposta.

Se un'implementazione riceve un messaggio con un warning-value che include un warn-date, e quel warn-date è diverso dal valore Date nella risposta, allora quel warning-value DEVE (MUST) essere eliminato dal messaggio prima di memorizzarlo, inoltrarlo o utilizzarlo. Ciò previene le cattive conseguenze del caching ingenuo dei campi di intestazione Warning.

Se tutti i warning-values vengono eliminati per questo motivo, anche il campo di intestazione Warning DEVE (MUST) essere eliminato.


📝 翻译说明 (Translation Notes)

  • Warning机制: HTTP缓存诊断的核心机制,所有语言版本都保持了RFC 2119关键词的严谨性
  • 1xx vs 2xx warn-code: 基于验证的自动删除规则在所有语言版本中得到了精确区分
  • warn-date验证: HTTP/1.0兼容性和Date字段一致性检查在所有语言中准确翻译
  • ABNF语法: 完整保留,确保技术实现的一致性
  • 调试用途: warn-agent作为调试信息的用途在所有语言版本中得到了明确说明