richieste http

Una richiesta HTTP viene effettuata da un client a un host denominato, che si trova su un server. Lo scopo della richiesta è 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 riga 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.

Riga richiesta

La riga di richiesta è la prima riga nel messaggio di richiesta. Si compone di almeno tre elementi:
  1. Un metodo. Il metodo è un comando di una parola che indica al server cosa deve fare con la risorsa. Ad esempio, al server potrebbe essere richiesto 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 riga 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 potrebbe contenere alcuni elementi aggiuntivi:
  • Una stringa di query. Ciò 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 l'ubicazione della risorsa viene specificata in questo modo, è nota come modulo URI assoluto . 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 utilizzata per specificare che l'utente desidera solo leggere il documento richiesto in francese o tedesco e che il documento deve essere inviato solo se è stato modificato 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, dopo la serie di intestazioni HTTP, viene inserita una riga vuota (cioè un CRLF da solo), 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, come ad esempio essere suddiviso in blocchi (codifica di trasferimento suddivisa in blocchi). 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 i dati di input al server, ha un corpo del messaggio contenente i dati. Una richiesta con il metodo GET, che richiede al server di inviare una risorsa, non ha un corpo del messaggio.