Kioskea
Seguici Kioskea / Facebook
Recherche

Il protocollo HTTP

Febbraio 2015

Introduzione al protocollo HTTP


Il protocollo HTTP (HyperText Transfer Protocol) è il protocollo più usato su internet dal 1990. La versione 0.9 era destinata solo ai trasferimenti di dati su internet (in particolare delle pagine web scritte in HTML. La versione 1.0 del protocollo (la più usata) permette ormai di trasferire dei messaggi con delle intestazioni che descrivono il contenuto del messaggio utilizzando una codificazione di tipo MIME.

Lo scopo del protocollo HTTP è di permettere un trasferimento di file (essenzialmente in formato HTML) localizzati grazie ad una stringa di caratteri detta URL tra un browser (il client) e un server web (detto httpd sui terminali UNIX).

Comunicazione tra browser e server


La comunicazione tra il browser e il server avviene in due tempi :
Comunicazione tra browser e server
  • Il browser effettua una richiesta HTTP
  • Il server tratta la richiesta poi invia una risposta HTTP In realtà la comunicazione si effettua in più volte se si considera l'elaborazione della richiesta dal server. Dato che si interessa solamente al protocollo HTTP, l'elaborazione del lato server non sarà esplicito in questo articolo...

Se siete interessati a questo argomento, fate riferimento all'articolo sul trattamento delle CGI.

richiesta HTTP


Una richiesta HTTP è un insieme di righe inviate al server dal browser. Essa comprende :
  • Una riga di richiesta: è una riga che precisa il tipo di documento richiesto, il metodo che deve essere applicato, e la versione del protocollo usato. La riga comprende tre elementi che devono essere separati da uno spazio :
    • Il metodo
    • L'URL
    • La versione del protocollo usato dal client (generalmente HTTP/1.0)
  • I campi d'intestazione della richiesta: si tratta di un insieme di righe facoltative che permettono di dare delle informazioni supplementari sulla richiesta e/o il client (browser, sistema operativo,...). Ognuna di queste righe è composta da un nome che qualifica il tipo di intestazione, seguito da due punti (:) e dal valore dell'intestazione
  • Il corpo della richiesta: è un'insieme di righe opzionali che devono essere separate dalle righe precedenti da una riga vuota e che permettono ad esempio l'invio di dati con un comando POST quando si inviano dei dati di un modulo al server


Una richiesta HTTP ha quindi la seguente sintassi (<crlf> significa ritorno a capo o salto di riga) :
METODO URL VERSIONE <crlf> 
INTESTAZIONE : Valore <crlf> 
. 
. 
. 
INTESTAZIONE : Valore <crlf> 
riga vuota<crlf> 
CORPO DELLA RICHIESTA


Qui di seguito un esempio di richiesta HTTP :
GET http://it.kioskea.net HTTP/1.0 
Accept : text/html 
If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT 
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

Comandi


Comando</span>Descrizione</span>
GETRichiesta della risorsa situata ad un URL specifico
HEADRichiesta dell'intestazione della risorsa posta ad un URL specifico
POSTInvio di dati al programma posto ad un URL specifico
PUTInvio di dati all'URL specifico
DELETESoppressione della risorsa posta all'URL specifico

Intestazioni


Nome dell'intestazione</span>Descrizione</span>
AcceptTipo di contenuto accettato dal browser (ad esempio text/html). Vedere tipi MIME
Accept-CharsetCombinazione di caratteri attesa dal browser
Accept-EncodingCodifica di dati accettata dal browser
Accept-LanguageLinguaggio atteso dal browser (inglese di default)
AuthorizationIdentificazione del browser presso il server
Content-EncodingTipo di codifica del corpo del testo
Content-LanguageTipo di linguaggio del corpo della richiesta
Content-LengthLunghezza del corpo della richiesta
Content-TypeTipo di contenuto del corpo della richiesta (ad esempio text/html). Vedere tipi MIME
DateData di inizio del trasferimento dei dati
ForwardedUsato dai terminali intermedi tra il browser e il server
FromPermette di specificare l'indirizzo e-mail del client
FromPermette di specificare che il documento deve essere inviato se è stato modificato dopo una certa data
LinkRelazione tra due URL
Orig-URLURL d'origine della richiesta
RefererURL del link a partire dal quale la richiesta è stata effettuata
User-AgentStringa che da informazioni sul client, come il nome e la versione del browser, del sistema operativo

risposta HTTP


Una risposta HTTP è un insieme di righe inviate dal server al browser. Essa comprende :
  • una riga di stato: è una riga che precisa la versione del protocollo usata e lo stato di elaborazione della richiesta attraverso un codice e un testo chiarificante. La riga comprende tre elementi che devono essere separati da uno spazio :
    • La versione del protocollo usata
    • Il codice dello stato
    • Il significato del codice
  • I campi d'intestazione della risposta: si tratta di un insieme di righe facoltative che permettono di dare delle informazioni supplementari sulla risposta e/o il server. Ognuna di queste righe è composta da un nome che qualifica il tipo di intestazione, seguito da due punti (:) e dal valore dell'intestazione
  • Il corpo della risposta: contiene il documento richiesto



Una risposta HTTP a la seguente sintassi (<crlf> significa ritorno a capo o salto di riga) :
VERSIONE-HTTP CODICE SPIEGAZIONE <crlf> 
INTESTAZIONE : Valore <crlf> 
. 
. 
. 
INTESTAZIONE: Valore <crlf> 
riga vuota<crlf> 
CORPO DELLA RISPOSTA


Qui di seguito un esempio di risposta HTTP :
HTTP/1.0 200 OK 
Date : Sat, 15 Jan 2000 14:37:12 GMT 
Server : Microsoft-IIS/2.0 
Content-Type : text/HTML 
Content-Length : 1245 
Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT

Intestazioni di risposta


Nome dell'intestazione</span>Descrizione</span>
Content-EncodingTipo di codifica del corpo della risposta
Content-LanguageTipo di linguaggio del corpo della risposta
Content-LengthLunghezza del corpo della risposta
Content-TypeTipo del contenuto del corpo della risposta (ad esempio text/html). Vedere tipi MIME
DateData di inizio del trasferimento dei dati
ExpiresData limite di consumo dei dati
ForwardedUsato dai terminali intermedi tra il browser e il server
LocationRedirezione verso un nuovo URL associato al documento
ServerCaratteristiche del server che ha inviato la risposta

I codici di risposta


Sono i codici che vedete quando il browser non riesce a fornire la pagina richiesta. Il codice di risposta è costituito da tre cifre : la prima indica la classe dello stato e le seguenti la natura esatta dell'errore.

CodiceMessaggioDescrizione
10xMessaggio di informazioneQuesti codici non sono usati nella versione 1.0 del protocollo
20xRiuscitoQuesti codici indicano il buon svolgimento della transazione
200OKLa richiesta si è compiuta correttamente
201CREATEDEsso segue un comando POST, e indica la riuscita, il corpo del resto del documento ed è previsto che indichi l'URL nel quale il documento appena creato dovrebbe trovarsi.
202ACCEPTEDLa richiesta è stata accettata, ma la procedura successiva non è stata effettuata
203PARTIAL INFORMATIONQuando si riceve questo codice in risposta ad un comando GET, indica che la risposta non è stata completata.
204NO RESPONSEIl server ha ricevuto la richiesta ma non ha l'informazione da rinviare
205RESET CONTENTIl server indica al browser di sopprimere il contenuto dei campi di un modulo
206PARTIAL CONTENTSi tratta di una risposta ad una richiesta che comporta l'intestazione range. Il server deve quindi indicare l'intestazione content-Range
30xRedirectionQuesti codici indicano che la risorsa non è più nel posto indicato
301MOVEDI dati richiesti sono stati trasferiti ad un nuovo indirizzo
302FOUNDI dati richiesti sono ad un nuovo URL, ma potrebbero essere stai spostati
303METHODquesto implica che il client debba provare un nuovo indirizzo, usando di preferenza un metodo diverso dal GET
304NOT MODIFIEDSe il client a effettuato un ordine GET condizionale ( richiedendo se il documento è stato modificato rispetto all'ultima volta) e che il documento non è stato modificato, il server invia questo codice.
40xErrore dovuto al clientQuesti codici indicano che la richiesta non è corretta
400BAD REQUESTLa sintassi della richiesta è mal formulata oppure è impossibile da soddisfare
401UNAUTHORIZEDIl parametro del messaggio da le specifiche delle forme di autorizzazione accettabili. Il client deve riformulare la sua richiesta con i dati d'autorizzazione corretti.
402PAYMENT REQUIREDIl client deve riformulare la sua richiesta con i dati di pagamento corretti
403FORBIDDENL'accesso alla risorsa è stato semplicemente vietato
404NOT FOUNDClassico! Il server non ha trovato niente all'indirizzo specificato.
50xErrore dovuto al serverQuesti codici indicano che vi è un errore interno al server
500INTERNAL ERRORIl server a riscontrato una condizione inattesa che gli ha impedito di dare seguito alla richiesta
501NOT IMPLEMENTEDIl server non supporta il servizio richiesto
502BAD GATEWAYIl server ha ricevuto una risposta non valida dalla parte del server al quale ha cercato di accedere fungendo gateway o proxy
503SERVICE UNAVAILABLEIl server non può rispondervi in quel momento, dato che il traffico è troppo intenso (tutte le righe della vostra corrispondenza sono occupate, quindi riprovare più tardi)
504GATEWAY TIMEOUTLa risposta del server è troppo lunga rispetto al tempo durante il quale il gateway era pronto ad aspettarlo

Ulteriori informazioni


Per ulteriori informazioni sul protocollo HTTP fare riferimento alla RFC 1945 che spiega in maniera dettagliata il protocollo :
Per poter consultare questo documento offline, ne potete scaricare gratuitamente una versione in formato PDF:
Il-protocollo-http.pdf

Vedi anche


The HTTP protocol
The HTTP protocol
El protocolo HTTP
El protocolo HTTP
Das HTTP Protokoll
Das HTTP Protokoll
Le protocole HTTP
Le protocole HTTP
O protocolo  HTTP
O protocolo HTTP
Il documento intitolato « Il protocollo HTTP » da Kioskea (it.kioskea.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.