richieste http

Una richiesta HTTP viene effettuata da un client a un host denominato, che si trova su un server. Lo scopo della richiesta è quello di accedere a una risorsa sul server.

Per effettuare la richiesta, il client utilizza i componenti di un URL (Uniform Resource Locator), che include le informazioni necessarie per accedere alla risorsa. I componenti di un URL spiegano gli URL.

Una richiesta HTTP composta correttamente contiene i seguenti elementi:
  1. Una linea di richiesta.
  2. Una serie di intestazioni HTTP o campi di intestazione.
  3. Un corpo del messaggio, se necessario.
Ogni intestazione HTTP è seguita da un ritorno a capo (CRLF). Dopo l'ultima intestazione HTTP, viene utilizzato un ulteriore CRLF (per creare una riga vuota) e poi inizia il corpo del messaggio.

Linea di richiesta

La riga di richiesta è la prima riga del messaggio di richiesta. Si compone di almeno tre elementi:
  1. Un metodo. Il metodo è un comando di una sola parola che indica al server cosa deve fare con la risorsa. Ad esempio, si potrebbe chiedere al server di inviare la risorsa al client.
  2. Il componente del percorso dell' URL per la richiesta. Il percorso identifica la risorsa sul server.
  3. Il numero di versione HTTP, che indica la specifica HTTP a cui il client ha cercato di rendere conforme il messaggio.
Un esempio di linea di richiesta è:
GET /software/htp/cics/index.html HTTP/1.1
In questo esempio:
  • il metodo è GET
  • il percorso è /software/htp/cics/index.html
  • la versione HTTP è HTTP/1.1
Una riga di richiesta può contenere alcuni elementi aggiuntivi:
  • Una stringa di query. Fornisce una stringa di informazioni che la risorsa può utilizzare per qualche scopo. Segue il percorso ed è preceduto da un punto interrogativo.
  • I componenti di schema e host dell' URL, oltre al percorso. Quando la posizione della risorsa è specificata in questo modo, si parla di forma URI assoluta. Per HTTP/1.1, questo modulo viene utilizzato quando la richiesta passa attraverso un server proxy. Anche per HTTP/1.1, se il componente host dell' URL non è incluso nella riga di richiesta, deve essere incluso nel messaggio in un'intestazione Host.

Intestazioni HTTP

Le intestazioni HTTP sono scritte su un messaggio per fornire al destinatario informazioni sul messaggio, sul mittente e sul modo in cui il mittente vuole comunicare con il destinatario. Ogni intestazione HTTP è composta da un nome e da un valore. Le specifiche del protocollo HTTP definiscono l'insieme standard delle intestazioni HTTP e descrivono come utilizzarle correttamente. I messaggi HTTP possono anche includere intestazioni di estensione, che non fanno parte delle specifiche HTTP/1.1 o HTTP/1.0.

Le intestazioni HTTP di una richiesta del client contengono informazioni che il server può utilizzare per decidere come rispondere alla richiesta. Ad esempio, la seguente serie di intestazioni può essere usata per specificare che l'utente vuole leggere il documento richiesto solo in francese o in tedesco e che il documento deve essere inviato solo se è cambiato dalla data e dall'ora in cui il client lo ha ottenuto per l'ultima volta:
Accept-Language: fr, de
If-Modified-Since: Fri, 10 Dec 2004 11:22:13 GMT

Nel messaggio di richiesta viene inserita una riga vuota (cioè un CRLF da solo) dopo la serie di intestazioni HTTP, per dividere le intestazioni dal corpo del messaggio.

Corpo messaggio

Il contenuto del corpo di qualsiasi messaggio HTTP può essere definito corpo del messaggio o corpo dell'entità. Tecnicamente, il corpo dell'entità è il contenuto effettivo del messaggio. Il corpo del messaggio contiene il corpo dell'entità, che può essere nel suo stato originale o può essere codificato in qualche modo per il trasporto, ad esempio suddividendolo in pezzi (chunked transfer-coding). Il corpo del messaggio di una richiesta può essere indicato per comodità come corpo della richiesta.

I corpi dei messaggi sono appropriati per alcuni metodi di richiesta e inappropriati per altri. Ad esempio, una richiesta con il metodo POST, che invia dati di input al server, ha un corpo del messaggio contenente i dati. Una richiesta con il metodo GET, che chiede al server di inviare una risorsa, non ha un corpo del messaggio.