Skip to content

HTTP Header – HTTP sta per “Hypertext Transfer Protocol“. Il web si basa su questo protocollo creato all’inizio degli anni ’90. Quasi tutto ciò che vedi nel tuo browser viene trasmesso al tuo computer tramite HTTP. Ad esempio, quando hai aperto la pagina di questo articolo, il tuo browser probabilmente ha inviato oltre 20 richieste HTTP e ha ricevuto risposte HTTP per ciascuna di esse.

Quando visiti un sito web, il tuo browser invia una richiesta al web server per ottenere dati o informazioni da esso, ad es. un file HTML (cioè una pagina web). Sia nella richiesta – la richiesta HTTP (Request header) – che nella risposta del server (Response header), vengono scambiate alcune meta-informazioni oltre ai dati effettivi.

Le intestazioni HTTP consentono al client e al server di scambiarsi informazioni aggiuntive con la richiesta o la risposta.

Questa che segue è l’intestazione HTTP che restituisce questo web server quando un client richiede la homepage:

HTTP/1.1 200 OK
Date: Tue, 10 Nov 2020 15:13:57 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Set-Cookie: __cfduid=d4ee6478778babb722b517c5e1b88c7e01605021237; expires=Thu, 10-Dec-20 15:13:57 GMT; path=/; domain=.evemilano.com; HttpOnly; SameSite=Lax
Vary: Accept-Encoding
Link: <https://www.evemilano.com/wp-json/>; rel="https://api.w.org/"
X-XSS-Protection: 1; mode=block
X-FastCGI-Cache: HIT
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=15552000; preload
Content-Security-Policy: frame-ancestors 'self'; form-action 'self';
Content-Security-Policy: default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';
Link: <https://fonts.googleapis.com>; rel=preconnect; crossorigin; probability=1.0;
Link: <https://stats.g.doubleclick.net>; rel=preconnect; crossorigin; probability=1.0;
Link: <https://www.google-analytics.com>; rel=preconnect; crossorigin; probability=1.0;
Link: <https://www.google.com>; rel=preconnect; crossorigin; probability=1.0;
Link: <https://www.google.it>; rel=preconnect; crossorigin; probability=1.0;
Link: <https://fonts.gstatic.com>; rel=preconnect; crossorigin; probability=1.0;
Link: <https://ajax.googleapis.com>; rel=preconnect; crossorigin; probability=1.0;
Link: <https://www.googletagmanager.com>; rel=preconnect; crossorigin; probability=1.0;
Link: </wp-content/plugins/eve_social_buttons/images/socicon.woff>; as=font; crossorigin=anonymous; rel=preload;
Link: </wp-content/uploads/2017/10/evemilano-160x90-azzurro.png>; as=image; rel=preload;
Link: <https://fonts.gstatic.com/s/lato/v17/S6uyw4BMUTPHjx4wXiWtFCc.woff2>; as=font; crossorigin=anonymous; rel=preload;
CF-Cache-Status: DYNAMIC
cf-request-id: 065451994b0000c29a802f2000000001
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=U1AVaBA1pT0pMqRozWFSqlAFDAwTZ%2FqEvx20aqPqG6LTwi9kJMrK9Ntbpha5EHJJOWQXfCNLlbmsF9uCQ%2FMLBKcVmBNZAxyW1OWKuh4ggmBmir2mHL5M2x2MyjBs%2BQ%3D%3D"}],"group":"cf-nel","max_age":604800}
NEL: {"report_to":"cf-nel","max_age":604800}
Server: cloudflare
CF-RAY: 5f00b86ede36c29a-FRA

La prima riga rappresenta il protocollo di trasmissione e lo Status Code della risorsa. Il vero contenuto richiesto dal client arriva una riga vuota dopo l’HTTP header di risposta. Qualsiasi risorsa viene anticipata dall’intestazione HTTP: pagine web, immagini, CSS, JavaScript, etc.

I campi di intestazione possono variare da server a server, non è detto che due web server forniscano gli stessi campi quando interrogati, è il developer che configura il web server e di conseguenza l’intestazione HTTP delle varie tipologie di file.

I campi dell’intestazione sono coppie chiave-valore separate da due punti in formato stringa di testo non crittografato, terminate da una sequenza di caratteri di ritorno a capo (CR) e avanzamento riga (LF). La fine della sezione di intestazione è indicata da una linea di campo vuota, con conseguente trasmissione di due coppie CR-LF consecutive.

Le intestazioni HTTP contengono informazioni sul browser del client, la pagina richiesta, il server e altro ancora.

Tipologie di HTTP header

Le intestazioni HTTP possono essere raggruppate in base ai loro contesti:

  • Intestazione HTTP generale (General header): intestazioni che si applicano sia alle richieste che alle risposte ma senza alcuna relazione con i dati eventualmente trasmessi nel corpo.
  • Intestazione HTTP della richiesta (Request header): intestazioni contenenti ulteriori informazioni sulla risorsa da recuperare o sul client stesso. I browser inviano una request header quando vogliono una risorsa da un web server e contiene il loro user-agent.
  • Intestazione HTTP della risposta (Response header): intestazioni con informazioni aggiuntive sulla risposta, come la sua posizione o sul server stesso (nome e versione ecc.). I web server inviano una response header al browser quando trasmettono una risorsa. Nelle response header troviamo lo Status Code, ad esempio, oppure le direttive di browser caching. È possibile inserire anche intestazioni HTTP utili a migliorare le performance di caricamento delle pagine web.
  • Intestazione HTTP dell’entità (Entity header): intestazioni contenenti ulteriori informazioni sul corpo dell’entità, come la lunghezza del contenuto o il tipo MIME.

Le intestazioni HTTP possono anche essere categorizzati in base a come le gestiscono i proxy:

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • TE
  • Trailer
  • Transfer-Encoding

C’è un mondo dietri gli HTTP header

Le intestazioni HTTP sono molto utili per svariate finalità, più le studio e più scopro utilizzi che ignoravo e che si rivelano particolarmente utili. Ad esempio, attraverso le intestazioni HTTP possiamo anche inviare al browser/client diverse informazioni utili sia in ambito di sicirezza (HTTP Security Header), sia per migliorare le performance di caricamento.

Come vedere le intestazioni HTTP

L’intestazione HTTP di una risorsa è visibile in diversi modi, il più semplice è con il browser. Ogni browser infatti offre una serie di strumenti utili a chi sviluppa o lavora con il web, io mi trovo bene con i DevTools di Chrome.

Apri il tab “Network” e ricarica la pagina. Vedrai un grafico a cascata con in linea ciascuna dipendenza richiesta dalla pagina e quindi scaricata dal browser.

Se clicchi su una dipendenza potrai vedere il box con l’intestazione HTTP sia di risposta che di richiesta.

Come vedere le intestazioni HTTP in Google Chrome
Come vedere le intestazioni HTTP in Google Chrome

In alternativa ci sono strumenti online per vedere l’intestazione HTTP di un URL, come ad esempio:

Per maggiori informazioni sulle coppie:valori che puoi trovare nelle intestazioni HTTP puoi fare riferimento alla documentazione ufficiale di Mozilla.

Articoli correlati

Autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi articoli aggiornati

Richiedi un preventivo SEO e Google Ads

Porta il tuo sito web al livello successivo con l’expertise di EVE Milano. La nostra agenzia di Search Marketing ha ricevuto oltre 1129 richieste di preventivo, un segnale chiaro della fiducia che imprenditori e manager, come te, ripongono nella nostra specializzazione tecnica e verticale nella SEO e PPC. Se la tua organizzazione cerca competenze specifiche per emergere nei risultati di Google, noi siamo pronti a fornire quel valore aggiunto. Affidati alla nostra esperienza per fare la differenza.
Richiedi un preventivo

Non perderti altre guide, iscriviti per ricevere un avviso mensile con gli aggiornamenti del blog!

Iscriviti alla newsletter!

Informativa sui cookies

Noi e terze parti selezionate utilizziamo cookie o tecnologie simili per finalità tecniche e, con il tuo consenso, anche per le finalità di esperienza e misurazione come specificato nella cookie policy. Puoi liberamente prestare, rifiutare o revocare il tuo consenso, in qualsiasi momento, accedendo al pannello delle preferenze. Il rifiuto del consenso può rendere non disponibili le relative funzioni. Usa il pulsante “Accetta” per acconsentire. Usa il pulsante “Rifiuta” per continuare senza accettare.