Passa al contenuto principale

5 5.Warning

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作为调试信息的用途在所有语言版本中得到了明确说明