Ogni volta che visitate un sito web, il vostro browser invia una richiesta al web server per ottenere i dati e le in­for­ma­zio­ni ne­ces­sa­rie, come ad esempio i file HTML (ossia una pagina web). Sia at­tra­ver­so la richiesta HTTP, sia con la risposta da parte del server, vengono scambiate una serie di meta in­for­ma­zio­ni oltre ai soliti dati, riassunte nell’header HTTP. In questo articolo vi spie­ghia­mo che funzione svolge l’header HTTP e quali sono i suoi campi più im­por­tan­ti.

Registra il tuo dominio
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

La funzione dell’header spiegata con un esempio

Ri­chia­man­do il sito web www.example.com, il web server non vi invia in risposta solamente il sito web richiesto, ma anche l’header qui di seguito riportato, che non viene però vi­sua­liz­za­to dall’utente:

Le singole righe vengono chiamate “Campi header”. Ciascuna delle quali, la prima esclusa, consiste di una coppia nome/valore separata dai due punti.

Nel seguente elenco vi spie­ghia­mo le in­for­ma­zio­ni contenute nelle singole righe:

  • HTTP/1.1 fa ri­fe­ri­men­to alla versione del pro­to­col­lo HTTP uti­liz­za­ta.
  • 200 OK è il codice di stato, che informa sull’avvenuto ri­ce­vi­men­to, sull’ela­bo­ra­zio­ne e l’ac­cet­ta­zio­ne della richiesta da parte del server.
  • Content-Encoding e Content-Type for­ni­sco­no in­for­ma­zio­ni in merito alla tipologia del file.
  • Age, Cache-Control, Expires, Vary e X-Cache si ri­fe­ri­sco­no al caching (sal­va­tag­gio nella memoria tem­po­ra­nea) del file.
  • Etag e Last-Modified indicano la versione del file inviato.
  • Server comunica il software uti­liz­za­to dal web server.
  • Content-Lenght cor­ri­spon­de alla di­men­sio­ne del file in bytes.

Come si evince, queste in­for­ma­zio­ni dell’header servono prin­ci­pal­men­te per il coor­di­na­men­to tra client (il vostro browser) e server. Grazie a loro ci si assicura che il client comprenda la forma del file ricevuto, che il file sia suf­fi­cien­te­men­te ag­gior­na­to e che la sua di­men­sio­ne coincida con quella che è l'a­spet­ta­ti­va del browser.

Le righe dell’header riportate nell’esempio sono solamente una minima parte di tutti i campi a di­spo­si­zio­ne nell’header. Infatti l'header HTTP contiene quasi cento campi, di cui circa trenta solamente per le spe­ci­fi­che della richiesta HTTP, un’altra trentina per la risposta del server e una buona parte dei restanti campi dell’header servono per altri scopi e (almeno per ora) non sono stan­dar­diz­za­ti.

La seguente tabella vi spiega quali sono i campi dell’header di maggiore im­por­tan­za.

Pa­no­ra­mi­ca dei campi più im­por­tan­ti dell’header HTTP

HTTP Request – la richiesta del client

Campo dell’header Funzione Esempio
Accept I tipi di contenuto che il client è in grado di elaborare. Se il campo è vuoto significa che è in grado di elaborare tutti i tipi di contenuto Accept: text/html, ap­pli­ca­tion/xml
Accept-Charset Quale set di caratteri il client è in grado di mostrare Accept-Charset: utf-8
Accept-Encoding I formati compressi sup­por­ta­ti dal client Accept-Encoding: gzip
Accept-Language La lingua de­si­de­ra­ta Accept-Language: it-IT
Au­tho­ri­za­tion I dati di au­ten­ti­fi­ca­zio­ne come ad esempio quelli di login Basic WjbU7D25zTAlV2tZ7==
Cache-Control Le opzioni del mec­ca­ni­smo di caching Cache-Control: no-cache
Cookie I cookie ar­chi­via­ti per questo server Cookie: $Version=1; Content=23
Content-Length Lunghezza del request body (corpo del messaggio) Content-Length: 212
Content-Type Il tipo MIME del body rilevante per le richieste POST e PUT Content-Type: ap­pli­ca­tion/x_222-form-ur­len­co­ded
Date Data e orario della richiesta Date: Mon, 9 March 2020 09:02:22 GMT
Expect Formula quanto ci si aspetta dal server, che so­li­ta­men­te coincide con il ri­ce­vi­men­to di una richiesta esaustiva. Expect: 100-continue (il server deve inviare Code 100, se è pronto ad ac­co­glie­re la richiesta)
Host Il nome di dominio del server Host: esempio.it
If-Match Ese­cu­zio­ne con­di­zio­na­ta di un’azione in base alla cor­ri­spon­den­za del codice inviato If-Match: “ft678iujhnjio90’pöl“
If-Modified-Since Inviare solamente se il contenuto richiesto è stato mo­di­fi­ca­to suc­ces­si­va­men­te alla data/ora indicata IF-Modified-Since: Mon 2 Mar 2020 1:00:00 GMT
If-None-Match Come sopra, ma spe­ci­fi­ca­men­te per un ETag (Entity-Tag, vedi sotto) If-None-Match: “cxdrt5678iujhgbvb“
If-Range Richiede solo la parte del contenuto che è stata mo­di­fi­ca­ta o che manca dalla cache del client If-Range: Mon 2 Mar 2020 1:00:00 GMT
If-Un­mo­di­fied-Since Il contrario di IF-Modified-Since If-Un­mo­di­fied-Since: Mon 2 Mar 2020 1:00:00 GMT
Max-Forwards Definisce il limite massimo di quanto spesso può essere inoltrata la risposta del server Max-Forwards: 12
Proxy-Au­tho­ri­za­tion Viene uti­liz­za­to per au­ten­ti­ca­re il client presso un server proxy Proxy-Au­tho­ri­za­tion: Basic WjbU7D25zTAlV2tZ7==
Range Specifica che parte del contenuto viene richiesta Range: bytes=0-9999
Referrer URL della risorsa dalla quale proviene la richiesta (ossia dalla quale è collegata) Referrer: https://esempio.it/index.html
TE Ac­cet­ta­zio­ne dell’esten­sio­ne di codifica di tra­sfe­ri­men­to TE: gzip, deflate
User-Agent Lo user-agent del client (il browser) Mozilla/5.0 (Windows NT 10.0; Win64; x64) Ap­pleWe­b­Kit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
ran­kin­g­Coach
Vendi di più con il marketing online e l'IA
  • Migliore po­si­zio­na­men­to su Google senza agenzie esterne
  • Risposte veloci a commenti o re­cen­sio­ni sui social media
  • Nessuna co­no­scen­za SEO o di marketing online richiesta

HTTP Response – la riposta del server

Campo dell’header Funzione Esempio
Accept-Ranges Quali unità del server sono accettate per il range indicato (vedi sopra) Accept-Ranges: bytes
Age Il tempo in secondi dalla creazione dell’oggetto nella cache Age: 2300
Allow I tipi di richieste ammessi per una de­ter­mi­na­ta risorsa Allow: GET, POST, HEAD
Cache-Control Se e per quanto tempo l’oggetto può essere mantenuto nella cache Cache-Control: max-age=4800
Con­nec­tion Il tipo di con­nes­sio­ne preferito Con­nec­tion: close
Content-Encoding Tipo di com­pres­sio­ne Content-Encoding: deflate
Content-Language Lingua della risorsa Content-Language: it-IT
Content-Length Di­men­sio­ne del body in bytes Content-Length: 135674
Content-Location Luogo di ar­chi­via­zio­ne del file, nel caso in cui provenga da un luogo d’ar­chi­via­zio­ne diverso da quello richiesto (ad esempio CDN). Content-Location: /esempio.it
Content-Security-Policy La politica di sicurezza del server Content-Security-Policy: frame-src 'none’; object-src 'none‘
Content-Type Il tipo di MIME del file richiesto Content-Type: text/tml; charset=utf-8
Date L’orario della risposta Date: Mon 2 Mar 2020 1:00:00 GMT
ETag Indica una versione specifica del file ETag: “vt6789oi8uztgfvbn“
Expires Da quando il file deve essere con­si­de­ra­to superato Expires: Tue 3 Mar 2020 1:00:00 GMT
Last-Modified Orario dell’ultima modifica del file Last-Modified: Mon 2 Mar 2020 1:00:00 GMT
Location Con­trad­di­stin­gue il luogo d’ar­chi­via­zio­ne nel quale viene inoltrata la richiesta Location: https://www.esempio.it
Proxy-Au­then­ti­ca­te Indica se e come il client si deve au­ten­ti­ca­re con il server proxy Proxy-Au­then­ti­ca­te: Basic
Retry-After A partire da quando il client deve avanzare un’altra richiesta, nel caso in cui la risorsa sia tem­po­ra­nea­men­te in­di­spo­ni­bi­le (data o secondi) Retry-After: 300
Server Iden­ti­fi­ca­zio­ne del server. Server: Apache
Set-Cookie Posiziona un cookie nel client Set-Cookie: UserID=XY; Max-Age=3800; Version=1
Transfer-Encoding Il metodo di com­pres­sio­ne Transfer-Encoding: gpzip
Vary Informa quale campo dell’header vada con­si­de­ra­to come variabile nel caso in cui un file viene richiesto dalla cache Vary: User-Agent (= il server ha a di­spo­si­zio­ne diverse versioni del file in base allo User Agent)
Via Il proxy tramite il quale viene inviata la risposta Via: 1.1www.esempio.it
Vai al menu prin­ci­pa­le