Passa al contenuto principale

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 IntestazioneScopoEsempio
14.1 AcceptSpecifica i tipi di media accettabili dal clientAccept: text/html, application/json
14.2 Accept-CharsetSpecifica i set di caratteri accettabili dal clientAccept-Charset: utf-8, iso-8859-1
14.3 Accept-EncodingSpecifica le codifiche di contenuto accettabili dal clientAccept-Encoding: gzip, deflate
14.4 Accept-LanguageSpecifica le lingue preferite dal clientAccept-Language: it, en
14.5 Accept-RangesIndica se il server accetta richieste di intervalloAccept-Ranges: bytes

Campi di Intestazione di Autenticazione

Campo di IntestazioneScopoTipo
14.8 AuthorizationContiene le credenziali di autenticazione dell'user agentIntestazione di richiesta
14.33 Proxy-AuthenticateSfida di autenticazione del server proxyIntestazione di risposta
14.34 Proxy-AuthorizationCredenziali di autenticazione fornite dal client al proxyIntestazione di richiesta
14.47 WWW-AuthenticateSfida di autenticazione del serverIntestazione di risposta

Campi di Intestazione di Controllo della Cache

Campo di IntestazioneScopoDescrizione
14.6 AgeTempo di permanenza della risposta nella cache proxyIntestazione di risposta
14.9 Cache-ControlSpecifica le direttive di cachingIntestazione generale
14.21 ExpiresSpecifica la data/ora di scadenza della rispostaIntestazione di entità
14.32 PragmaDirettive specifiche dell'implementazione (retrocompatibilità)Intestazione generale
14.44 VaryIndica quali intestazioni di richiesta influenzano la selezione della cacheIntestazione di risposta

Campi di Intestazione di Richiesta Condizionale

Campo di IntestazioneScopoMetodo di Validazione
14.24 If-MatchEseguire solo se l'ETag corrispondeValidazione forte
14.25 If-Modified-SinceEseguire solo se la risorsa è stata modificataValidazione temporale
14.26 If-None-MatchEseguire solo se l'ETag non corrispondeValidazione forte/debole
14.27 If-RangeRichiesta di intervallo condizionaleValidazione combinata
14.28 If-Unmodified-SinceEseguire solo se la risorsa non è stata modificataValidazione temporale

Campi di Intestazione di Descrizione del Contenuto

Campo di IntestazioneScopoDescrizione
14.11 Content-EncodingCodifica applicata al corpo dell'entitàgzip, compress, deflate
14.12 Content-LanguageLingua naturale del corpo dell'entitàit-IT, en-US
14.13 Content-LengthLunghezza in byte del corpo dell'entitàNumerico
14.14 Content-LocationPosizione alternativa dell'entitàURI
14.15 Content-MD5Digest MD5 del corpo dell'entitàCodificato in Base64
14.16 Content-RangePosizione del corpo dell'entità parzialebytes 200-1000/1234
14.17 Content-TypeTipo di media del corpo dell'entitàtext/html; charset=utf-8

Campi di Intestazione di Gestione della Connessione

Campo di IntestazioneScopoDescrizione
14.10 ConnectionControlla le opzioni della connessione correntekeep-alive, close
14.23 HostHost e numero di porta della richiestaIntestazione di richiesta obbligatoria
14.39 TECodifiche di trasferimento accettabili dal clienttrailers, deflate
14.40 TrailerIndica i campi di intestazione presenti nel trailer del messaggioCodifica chunked
14.41 Transfer-EncodingCodifica di trasferimento applicata al corpo del messaggiochunked
14.42 UpgradeRichiesta di passaggio ad altri protocolliHTTP/2.0, WebSocket
14.45 ViaRegistra proxy e gateway intermediTracciamento del percorso

Campi di Intestazione di Validazione dell'Entità

Campo di IntestazioneScopoTipo
14.19 ETagTag di entità (identificatore univoco)Validatore forte/debole
14.29 Last-ModifiedOra dell'ultima modifica della risorsaTimestamp

Campi di Intestazione di Controllo della Richiesta

Campo di IntestazioneScopoDescrizione
14.7 AllowMetodi HTTP supportati dalla risorsaGET, POST, PUT
14.20 ExpectComportamento specifico del server atteso dal client100-continue
14.22 FromIndirizzo e-mail dell'utente richiedenteInformativo
14.31 Max-ForwardsNumero massimo di inoltri per richieste TRACE/OPTIONSNumerico
14.35 RangeRichiesta di contenuto parziale dell'entitàbytes=0-499
14.36 RefererIndirizzo sorgente dell'URI della richiestaURI

Campi di Intestazione di Controllo della Risposta

Campo di IntestazioneScopoDescrizione
14.18 DateData e ora di creazione del messaggioFormato data HTTP
14.30 LocationURI di reindirizzamento o risorsa appena creataURI assoluto/relativo
14.37 Retry-AfterSuggerisce quando il client dovrebbe riprovareData o secondi
14.38 ServerInformazioni software del server di origineNome e versione del software
14.46 WarningInformazioni di avviso aggiuntiveCodice di avviso a tre cifre

Informazioni sull'User Agent

Campo di IntestazioneScopoDescrizione
14.43 User-AgentInformazioni sull'user agent che avvia la richiestaIdentificazione 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:

  1. Un singolo campo di intestazione, valori separati da virgole:

    Accept: text/html, application/json, */*
  2. 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.