Visualizzatore degli header di risposta
Inserisci un indirizzo e leggi cosa dice il server prima di inviare la pagina: la riga di stato e ogni header, per ogni reindirizzamento lungo il percorso. Una breve nota accanto a ogni header spiega cosa ci fa lì.
La parte di una pagina web che non vedi mai
Una risposta di un server web è confezionata come un pacco. La pagina è quello che c’è nella scatola. Fuori c’è un’etichetta, fatta di una prima riga con un codice di stato a tre cifre e poi di un elenco di righe Nome: valore chiamate header. Il browser legge prima l’etichetta e decide quasi tutto da lì: se mostrare o scaricare, se tenere una copia, se andare da un’altra parte, quali cookie salvare.
Gli header non li vedi mai sullo schermo, quindi lì dentro si nascondono molti comportamenti misteriosi. Una pagina che non si aggiorna, un reindirizzamento che gira in tondo, un font bloccato su un altro dominio, un login che non resta attivo. Il più delle volte è un header con il valore sbagliato.
Cosa fa questo visualizzatore
Il nostro server invia una richiesta GET all’indirizzo che inserisci, dello stesso tipo che invia un browser, e registra la risposta. Se la risposta è un reindirizzamento (uno stato 3xx con un header Location), richiede il nuovo indirizzo e registra anche quello, fino a otto volte. Ottieni un blocco per risposta, in ordine, così vedi quale server ha aggiunto quale header a quale passaggio.
Cerchiamo ogni header in un dizionario di oltre 130 nomi e lo mostriamo con la sua famiglia e una spiegazione di una frase. Le famiglie sono:
| Famiglia | Header tipici | Domanda a cui rispondono |
|---|---|---|
| Cache | Cache-Control, ETag, Age, X-Cache | Si può conservare, per quanto tempo, e ha risposto una cache? |
| Contenuto | Content-Type, Content-Encoding, Content-Length | Cosa c’è nel corpo e come è impacchettato? |
| Sicurezza | Strict-Transport-Security, Content-Security-Policy | Quali protezioni del browser sono attive? |
| Cookie | Set-Cookie | Cosa deve ricordare il browser? |
| Cross-origin | Access-Control-Allow-Origin | Gli script di altri siti possono leggere questa risposta? |
| Connessione | Alt-Svc, Date, Keep-Alive | Come viene gestito il collegamento con il server? |
| Server e CDN | Server, Via, CF-RAY, X-Served-By | Quale software e quale rete hanno risposto? |
| Diagnostica | Server-Timing, X-Request-Id | Quanto tempo ci è voluto e come ritrovarlo nei log? |
Un nome che non è nel dizionario viene segnato come header personalizzato o poco comune. Qualsiasi software è libero di inventarne di propri, quindi vedrai spesso questa etichetta, ed è innocua. Durate e dimensioni vengono convertite dove serve, così max-age=31536000 appare come 365 giorni.
Il riepilogo dà lo stato finale, la versione HTTP negoziata dal nostro server, il numero di reindirizzamenti, il software indicato dall’header Server e il numero di header nell’ultima risposta. Qui non si danno voti. Se vuoi un punteggio, il voto degli header di sicurezza te ne dà uno.
Leggere la riga di stato
- 2xx: la richiesta è riuscita.
200è il caso normale. - 301 e 308: spostato per sempre. Browser e motori di ricerca ricordano il nuovo indirizzo. 302, 303 e 307: vai lì per ora, e tieni l’originale come riferimento.
- 4xx: il server rifiuta, o non trova quello che è stato chiesto. Un
403su una pagina che nel tuo browser si apre senza problemi spesso significa che il sito blocca le richieste automatiche. - 5xx: è il server stesso ad aver fallito. I codici da
520a526vengono da una CDN che non è riuscita a raggiungere il server dietro di lei.
Quattro cose che si controllano con questo strumento
- «Perché i visitatori vedono ancora la vecchia versione?»
- Leggi
Cache-ControleAge. Unmax-agelungo su una pagina HTML significa che i browser non la richiederanno finché non scade. UnX-Cacheo unCF-Cache-StatusaHITsignifica che la CDN ha servito la propria copia e va svuotata. - «La compressione è attiva?»
- Cerca
Content-Encoding: br,gzipozstd. Se l’header manca su una pagina HTML, la pagina viaggia a dimensione piena. - «Da dove viene questo reindirizzamento?»
- Confronta l’header
Serverdi ogni passaggio. Un reindirizzamento a cui risponde la CDN è stato impostato nel suo pannello. Uno a cui risponde nginx o Apache sta nella configurazione del server. Uno che portaX-Redirect-Byindica l’applicazione o il plugin che lo ha emesso. - «Con cosa gira questo sito?»
Server,X-Powered-ByeViaspesso indicano il server web, il linguaggio e la CDN. Sul tuo sito, vale la pena togliere i numeri di versione da questi header.
Stai guardando gli header che il nostro server ha ricevuto per una sola richiesta anonima. Un sito può rispondere in modo diverso a un visitatore che ha fatto il login, a un browser da cellulare, a un altro paese o a un altro Accept-Language. I nomi degli header sono mostrati nella grafia abituale. HTTP/2 e HTTP/3 li trasmettono in minuscolo, come fa il blocco grezzo, e maiuscole e minuscole non contano mai.
Domande frequenti
Come vedo gli header di risposta nel mio browser?
Apri gli strumenti per sviluppatori (F12, o Cmd+Option+I su Mac), vai nella scheda Rete (Network), ricarica la pagina e clicca sulla prima richiesta. Il pannello Header mostra le stesse righe. Questo visualizzatore serve quando non puoi farlo: su un telefono, per un link che preferisci non aprire, o per vedere la risposta data a un client senza cookie.
Qual è la differenza tra header di richiesta e header di risposta?
Gli header di richiesta partono con la domanda del browser: quale pagina, quali lingue e formati accetta, quali cookie possiede. Gli header di risposta tornano dal server insieme alla risposta. Questa pagina mostra solo gli header di risposta.
Gli header X- sono standard?
Il prefisso X- era una convenzione per gli header non ufficiali. Alcuni sono diventati universali lo stesso, come X-Frame-Options e X-Content-Type-Options. La convenzione è stata abbandonata nel 2012, quindi gli header personalizzati più recenti spesso non hanno alcun prefisso.
Perché ottengo header diversi da quelli che mostra il mio browser?
Perché non è la stessa richiesta. Server e CDN si adattano allo user agent del client, ai cookie, alla lingua e alla posizione, e una copia in cache può portare header prodotti ore prima. L’header Vary elenca quali header di richiesta il server prende in considerazione.
Devo nascondere gli header Server e X-Powered-By?
Nascondere il nome del prodotto cambia poco. Togliere i numeri di versione vale invece i due minuti che richiede, perché gli scanner automatici li usano per scegliere quali falle note provare. In nginx usa server_tokens off;, in Apache ServerTokens Prod, in PHP expose_php = Off.
Un header mancante significa che c’è qualcosa che non va?
Di solito no. Content-Type è l’unico atteso su quasi ogni risposta con un corpo. Gli altri contano a seconda di quello che vuoi. Senza Cache-Control, la cache è lasciata all’intuito di ogni browser, e senza header di sicurezza le protezioni facoltative restano spente.