5 5.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)。