Protocollo HTTP

Richiesta HTTP

Struttura delle richieste HTTP: metodo, URL, header e corpo con analisi pratica tramite DevTools.

Messaggi HTTP | Richiesta HTTP

Che cos’è una richiesta HTTP

Concetto: messaggio del client   |   Contesto: comunicazione Web

Una richiesta HTTP è il messaggio con cui un client (per esempio il browser) chiede al server di eseguire un’operazione su una risorsa. La richiesta specifica che cosa fare (metodo), su quale risorsa (target), quali informazioni aggiuntive trasmettere (header) e, se necessario, quali dati inviare (corpo).

Quando apri una pagina, il browser può inviare una richiesta per il documento HTML e altre richieste per CSS, immagini e JavaScript. Ogni richiesta riceve normalmente una risposta HTTP.

Attenzione: il metodo GET appartiene alla richiesta; il codice 200 appartiene alla risposta. Non sono la stessa informazione.

Le parti di una richiesta HTTP/1.1

Concetto: riga iniziale, header, corpo   |   Contesto: esempio testuale

In HTTP/1.1, il formato testuale del messaggio permette di riconoscere quattro elementi. HTTP/2 e HTTP/3 conservano il significato delle richieste, ma codificano i messaggi in modo diverso.

GET /prodotti?categoria=router HTTP/1.1
Host: esempio.test
Accept: text/html
User-Agent: BrowserDidattico/1.0

ElementoSignificatoNell’esempio
MetodoOperazione richiesta.GET
TargetPercorso e parametri della risorsa./prodotti?categoria=router
VersioneVersione della sintassi del messaggio.HTTP/1.1
HeaderInformazioni aggiuntive in forma nome: valore.Host, Accept
Riga vuotaTermina gli header e separa l’eventuale corpo.Subito dopo User-Agent
CorpoDati opzionali della richiesta.Assente nell’esempio
Schema delle parti di una richiesta HTTP/1.1 con metodo, target, header e corpo
Schema esplicativo: esempio testuale HTTP/1.1, non acquisizione di rete reale.

Interpretare metodo e target

Concetto: GET e percorso   |   Contesto: URL della risorsa

Nell’esempio GET /prodotti?categoria=router HTTP/1.1, il metodo è GET, il percorso è /prodotti e il parametro di query è categoria=router. Il nome dell’host è indicato dall’header Host.

Esempio di lettura: il client chiede al server esempio.test la rappresentazione della risorsa /prodotti, selezionando la categoria router.

In una richiesta POST è frequente la presenza di un corpo, per esempio dati di un modulo. Il corpo non è obbligatorio per tutte le richieste e la presenza di un corpo non dipende esclusivamente dal metodo.

Gli header più comuni

Concetto: metadati della richiesta   |   Contesto: browser e server

HeaderChe cosa indica
HostHost e, se necessario, porta del server richiesto in HTTP/1.1.
AcceptTipi di contenuto che il client può accettare.
Accept-LanguagePreferenze linguistiche del client.
User-AgentIdentificativo dichiarato dal software client.
Content-TypeTipo dei dati nel corpo, quando presente.

Nei DevTools puoi osservare gli header della richiesta anche se la connessione usa HTTP/2 o HTTP/3. In questi casi il browser mostra una rappresentazione interpretata dei campi, non necessariamente i byte del messaggio trasmessi sulla rete.

LABORATORIO

Analizzare una richiesta HTTP con DevTools

Individuare metodo, URL e header di una richiesta reale e riconoscere l’eventuale corpo.

Verifica dei concetti

Concetto: struttura della richiesta   |   Contesto: metodi, header e corpo

Seleziona una domanda per visualizzare la risposta e confrontarla con la tua.

1. Quali sono le parti principali di una richiesta HTTP/1.1? ▾
Risposta: La riga di richiesta (metodo, target e versione), gli header, una riga vuota di separazione e un corpo eventuale.
2. Il codice 200 fa parte della richiesta? ▾
Risposta: No. 200 è un codice di stato della risposta HTTP, mentre la richiesta contiene un metodo come GET o POST.
3. A che cosa serve l’header Host? ▾
Risposta: In HTTP/1.1 indica il nome dell’host richiesto e, quando necessario, la porta; aiuta il server a individuare il sito o servizio desiderato.
4. Una richiesta GET deve sempre avere un corpo? ▾
Risposta: No. Le richieste GET usate per caricare documenti normalmente non hanno un corpo. Il corpo è opzionale nella struttura generale di una richiesta.
5. Qual è la differenza tra Payload e Response in DevTools? ▾
Risposta: Payload mostra i dati inviati dal client, quando presenti; Response mostra il contenuto restituito dal server.
COLLEGAMENTO CON CHROME DEVTOOLS

Osserva in Network metodo, URL, intestazioni e dati inviati dal client.

Apri la lezione del corso CHROME DEVTOOLS →