14. Header Field Definitions (Definizioni dei Campi di Intestazione)
Questo capitolo definisce la sintassi e la semantica di tutti i campi di intestazione HTTP standard nello standard HTTP/1.1. Il mittente non dovrebbe (SHOULD NOT) generare campi di intestazione non definiti in questo capitolo o nella sezione 7.1 (campi di intestazione dell'entità), a meno che il destinatario non li tratti come parte del corpo dell'entità.
Classificazione dei Campi di Intestazione
I campi di intestazione HTTP possono essere classificati in diverse categorie in base alla funzione:
Campi di Intestazione Generali (General Header Fields)
Applicabili ai messaggi di richiesta e risposta, ma non all'entità trasmessa.
Campi di Intestazione di Richiesta (Request Header Fields)
Consentono al client di trasmettere informazioni aggiuntive sulla richiesta e sul client stesso al server.
Campi di Intestazione di Risposta (Response Header Fields)
Consentono al server di trasmettere informazioni aggiuntive sulla risposta che non possono essere collocate nella riga di stato.
Campi di Intestazione di Entità (Entity Header Fields)
Definiscono metainformazioni sul corpo dell'entità o sulla risorsa identificata dalla richiesta.
Elenco Completo dei Campi di Intestazione HTTP/1.1
Campi di Intestazione di Negoziazione del Contenuto
| Campo di Intestazione | Scopo | Esempio |
|---|---|---|
| 14.1 Accept | Specifica i tipi di media accettabili dal client | Accept: text/html, application/json |
| 14.2 Accept-Charset | Specifica i set di caratteri accettabili dal client | Accept-Charset: utf-8, iso-8859-1 |
| 14.3 Accept-Encoding | Specifica le codifiche di contenuto accettabili dal client | Accept-Encoding: gzip, deflate |
| 14.4 Accept-Language | Specifica le lingue preferite dal client | Accept-Language: it, en |
| 14.5 Accept-Ranges | Indica se il server accetta richieste di intervallo | Accept-Ranges: bytes |
Campi di Intestazione di Autenticazione
| Campo di Intestazione | Scopo | Tipo |
|---|---|---|
| 14.8 Authorization | Contiene le credenziali di autenticazione dell'user agent | Intestazione di richiesta |
| 14.33 Proxy-Authenticate | Sfida di autenticazione del server proxy | Intestazione di risposta |
| 14.34 Proxy-Authorization | Credenziali di autenticazione fornite dal client al proxy | Intestazione di richiesta |
| 14.47 WWW-Authenticate | Sfida di autenticazione del server | Intestazione di risposta |
Campi di Intestazione di Controllo della Cache
| Campo di Intestazione | Scopo | Descrizione |
|---|---|---|
| 14.6 Age | Tempo di permanenza della risposta nella cache proxy | Intestazione di risposta |
| 14.9 Cache-Control | Specifica le direttive di caching | Intestazione generale |
| 14.21 Expires | Specifica la data/ora di scadenza della risposta | Intestazione di entità |
| 14.32 Pragma | Direttive specifiche dell'implementazione (retrocompatibilità) | Intestazione generale |
| 14.44 Vary | Indica quali intestazioni di richiesta influenzano la selezione della cache | Intestazione di risposta |
Campi di Intestazione di Richiesta Condizionale
| Campo di Intestazione | Scopo | Metodo di Validazione |
|---|---|---|
| 14.24 If-Match | Eseguire solo se l'ETag corrisponde | Validazione forte |
| 14.25 If-Modified-Since | Eseguire solo se la risorsa è stata modificata | Validazione temporale |
| 14.26 If-None-Match | Eseguire solo se l'ETag non corrisponde | Validazione forte/debole |
| 14.27 If-Range | Richiesta di intervallo condizionale | Validazione combinata |
| 14.28 If-Unmodified-Since | Eseguire solo se la risorsa non è stata modificata | Validazione temporale |
Campi di Intestazione di Descrizione del Contenuto
| Campo di Intestazione | Scopo | Descrizione |
|---|---|---|
| 14.11 Content-Encoding | Codifica applicata al corpo dell'entità | gzip, compress, deflate |
| 14.12 Content-Language | Lingua naturale del corpo dell'entità | it-IT, en-US |
| 14.13 Content-Length | Lunghezza in byte del corpo dell'entità | Numerico |
| 14.14 Content-Location | Posizione alternativa dell'entità | URI |
| 14.15 Content-MD5 | Digest MD5 del corpo dell'entità | Codificato in Base64 |
| 14.16 Content-Range | Posizione del corpo dell'entità parziale | bytes 200-1000/1234 |
| 14.17 Content-Type | Tipo di media del corpo dell'entità | text/html; charset=utf-8 |
Campi di Intestazione di Gestione della Connessione
| Campo di Intestazione | Scopo | Descrizione |
|---|---|---|
| 14.10 Connection | Controlla le opzioni della connessione corrente | keep-alive, close |
| 14.23 Host | Host e numero di porta della richiesta | Intestazione di richiesta obbligatoria |
| 14.39 TE | Codifiche di trasferimento accettabili dal client | trailers, deflate |
| 14.40 Trailer | Indica i campi di intestazione presenti nel trailer del messaggio | Codifica chunked |
| 14.41 Transfer-Encoding | Codifica di trasferimento applicata al corpo del messaggio | chunked |
| 14.42 Upgrade | Richiesta di passaggio ad altri protocolli | HTTP/2.0, WebSocket |
| 14.45 Via | Registra proxy e gateway intermedi | Tracciamento del percorso |
Campi di Intestazione di Validazione dell'Entità
| Campo di Intestazione | Scopo | Tipo |
|---|---|---|
| 14.19 ETag | Tag di entità (identificatore univoco) | Validatore forte/debole |
| 14.29 Last-Modified | Ora dell'ultima modifica della risorsa | Timestamp |
Campi di Intestazione di Controllo della Richiesta
| Campo di Intestazione | Scopo | Descrizione |
|---|---|---|
| 14.7 Allow | Metodi HTTP supportati dalla risorsa | GET, POST, PUT |
| 14.20 Expect | Comportamento specifico del server atteso dal client | 100-continue |
| 14.22 From | Indirizzo e-mail dell'utente richiedente | Informativo |
| 14.31 Max-Forwards | Numero massimo di inoltri per richieste TRACE/OPTIONS | Numerico |
| 14.35 Range | Richiesta di contenuto parziale dell'entità | bytes=0-499 |
| 14.36 Referer | Indirizzo sorgente dell'URI della richiesta | URI |
Campi di Intestazione di Controllo della Risposta
| Campo di Intestazione | Scopo | Descrizione |
|---|---|---|
| 14.18 Date | Data e ora di creazione del messaggio | Formato data HTTP |
| 14.30 Location | URI di reindirizzamento o risorsa appena creata | URI assoluto/relativo |
| 14.37 Retry-After | Suggerisce quando il client dovrebbe riprovare | Data o secondi |
| 14.38 Server | Informazioni software del server di origine | Nome e versione del software |
| 14.46 Warning | Informazioni di avviso aggiuntive | Codice di avviso a tre cifre |
Informazioni sull'User Agent
| Campo di Intestazione | Scopo | Descrizione |
|---|---|---|
| 14.43 User-Agent | Informazioni sull'user agent che avvia la richiesta | Identificazione del browser |
Regole di Sintassi dei Campi di Intestazione
Le regole di sintassi per tutti i valori dei campi di intestazione HTTP/1.1 sono descritte nella sezione 2.2 (Regole di base) e in questa sezione.
Regole di Sintassi Generali
message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )
Campi di Intestazione Multi-valore
Alcuni campi di intestazione possono contenere più valori, che possono essere rappresentati in due modi:
-
Un singolo campo di intestazione, valori separati da virgole:
Accept: text/html, application/json, */* -
Più campi di intestazione con lo stesso nome:
Accept: text/html
Accept: application/json
Accept: */*
Formati Data/Ora
Le applicazioni HTTP devono accettare i seguenti tre formati di data/ora:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C asctime() format
Note Importanti
Estensibilità dei Campi di Intestazione
HTTP/1.1 consente campi di intestazione di estensione, ma i destinatari devono essere in grado di gestire campi di intestazione sconosciuti:
- Proxy - devono inoltrare i campi di intestazione non riconosciuti
- User agent - dovrebbero ignorare i campi di intestazione non riconosciuti
Ordine dei Campi di Intestazione
A meno che la definizione del campo di intestazione non specifichi diversamente, l'ordine dei campi di intestazione non è importante. Tuttavia, si raccomanda di inviare prima i campi di intestazione generali, poi i campi di intestazione di richiesta o risposta e infine i campi di intestazione di entità.
Limiti di Dimensione dei Campi di Intestazione
Sebbene HTTP non imponga un limite predefinito alla lunghezza dei campi di intestazione, le implementazioni dovrebbero essere pronte ad accettare campi di intestazione di qualsiasi lunghezza ragionevole.
Riferimenti Correlati
- Per la definizione completa dei campi di intestazione, consultare il capitolo 14 originale di RFC 2616
- Per le specifiche dei campi di intestazione aggiornate, consultare RFC 7230-7235 (nuova versione HTTP/1.1)
- Registro dei campi di intestazione HTTP IANA: https://www.iana.org/assignments/message-headers
Nota: Questo capitolo fornisce una panoramica di tutti i campi di intestazione HTTP/1.1 standard. Ogni campo di intestazione ha regole di sintassi dettagliate, scenari di utilizzo ed esempi. Nelle applicazioni reali, comprendere l'uso corretto di questi campi di intestazione è essenziale per costruire applicazioni HTTP conformi agli standard.