| PrecedentePPP / SLIP | Il protocollo HTTP | SeguenteLDAP |
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 codificazone si tipo MIME.
Lo scopo del protocollo HTTP è di permettere un trasferimento di file (essenzialmente in formato HTML) localizzati grazie ad una stringa di caratteri dettaURL tra un navigatore (il client) e un server web (detto http d sui terminali UNIX).
La comunicazione tra il navigatore e il server avviene in due tempi :
Una richiesta HTTP è un insieme di linee inviate al server dal navigatore. Essa comprende :
Una richiesta HTTP ha quindi la seguente sintassi (<crlf> significa ritorno a capo o salto di linea) :
METODO URL VERSIONE<crlf> INTESTAZIONE : Valore<crlf> . . . INTESTAZIONE : Valore<crlf> Linea 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 | Descrizione |
|---|---|
| GET | Richiesta della risorsa situata ad un URL specifico |
| HEAD | Richiesta dell'intestazione della risorsa posta ad un URL specifico |
| POST | Invio di dati al programma posto ad un URL specifico |
| PUT | Invio di dati all'URL specifico |
| DELETE | Soppressione della risorsa posta all'URL specifico |
| Nome dell'intestazione | Descrizione |
|---|---|
| Accept | Tipo di contenuto accettato dal browser (ad esempio text/html). Vedere tipi MIME |
| Accept-Charset | Combinazione di caratteri attesa dal browser |
| Accept-Encoding | Codifica di dati accettata dal browser |
| Accept-Language | Linguaggio atteso dal browser (inglese di default) |
| Authorization | Identificazione del browser presso il server |
| Content-Encoding | Tipo di codifica del corpo del testo |
| Content-Language | Tipo di linguaggio del corpo della richiesta |
| Content-Length | Lunghezza del corpo della richiesta |
| Content-Type | Tipo di contenuto del corpo della richiesta (ad esempio text/html). Vedere tipi MIME |
| Date | Data di inizio del trasferimento dei dati |
| Forwarded | Usato dai terminali intermedi tra il browser e il server |
| From | Permette di specificare l'indirizzo e-mail del client |
| From | Permette di specificare che il documento deve essere inviato se è stato modificato dopo una certa data |
| Link | Relazione tra due URL |
| Orig-URL | URL d'origine della richiesta |
| Referer | URL del link a partire dal quale la richiesta è stata effettuata |
| User-Agent | Stringa che da informazioni sul client, come il nome e la versione del navigatore, del sistema operativo |
Una risposta HTTP è un insieme di linee inviate dal server al navigatore. Essa comprende :
Una risposta HTTP a la seguente sintassi (<crlf> significa ritorno a capo o salto di linea) :
VERSIONe-HTTP CODICE SPIEGAZIONE<crlf> INTESTAZIONE : Valore<crlf> . . . INTESTAZIONE: Valore<crlf> Linae 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
| Nome dell'intestazione | Descrizione |
|---|---|
| Content-Encoding | Tipo di codifica del corpo della risposta |
| Content-Language | Tipo di linguaggio del corpo della risposta |
| Content-Length | Lunghezza del corpo della risposta |
| Content-Type | Tipo del contenuto del corpo della risposta (ad esempio text/html). Vedere tipi MIME |
| Date | Data di inizio del trasferimento dei dati |
| Expires | Data limite di comsumo dei dati |
| Forwarded | Usato dai terminali intermedi tra il browser e il server |
| Location | Redirezione verso un nuovo URL associato al documento |
| Server | Caratteristiche del server che ha inviato la risposta |
Sono i codici che vedete quando il navigatore non riesce a fornire la pagina richiesta. Il codice di risposta è costituito da tre cifre : la prima indica la classe dello statto e le seguenti la natura esatta dell'errore.
| Codice | Messaggio | Descrizione |
|---|---|---|
| 10x | Messagio di informazione | Questi codici non sono usati nella versione 1.0 del protocollo |
| 20x | Riuscito | Questi codici indicano il buon svolgimento della transazione |
| 200 | OK | La rischiesta si è compiuta correttamente |
| 201 | CREATED | Esso 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. |
| 202 | ACCEPTED | La richiesta è stata accettata, ma la procedura successiva non è stata effettuata |
| 203 | PARTIAL INFORMATION | Quando si riceve questo codice in risposta ad un comando GET, indica che la risposta non è stata completata. |
| 204 | NO RESPONSE | Il server ha ricevuto la richiesta ma non ha l'informazione da rinviare |
| 205 | RESET CONTENT | Il server indica al navigatore di sopprimere il contenuto dei campi di un formulario |
| 206 | PARTIAL CONTENT | Si tratta di una risposta ad una richiesta che comporta l'intestazione range. Il server deve quindi indicare l'intestazione content-Range |
| 30x | Redirection | Questi codici indicano che la risorsa non è più nel posto indicato |
| 301 | MOVED | I dati richiesti sono stati trasferiti ad un nuovo indirizzo |
| 302 | FOUND | I dati richiesti sono ad un nuovo URL, ma potrebbero essere stai spostati da… |
| 303 | METHOD | questo implica che il client debba provare un nuovo indirizzo, usando di preferenza un altro metodo diverso dal GET |
| 304 | NOT MODIFIED | Se 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, esso rinvia il codice. |
| 40x | Errrore dovuto al client | Questi codici indicano che la richiesta non è corretta |
| 400 | BAD REQUEST | La sintassi della richiesta è mal formulata oppure è impossibile da soddisfare |
| 401 | UNAUTHORIZED | Il parametro del messaggio da le specifiche delle forme di autorizzazione accettabili. Il client deve riformulare la sua richiesta con i dati d'autorizzazione corretti. |
| 402 | PAYMENT REQUIRED | Il client deve riformulare la sua richiesta con i dati di pagamento corretti |
| 403 | FORBIDDEN | L'accesso alla risorsa è stato semplicemente vietato |
| 404 | NOT FOUND | Classico! Il server non ha trovato niente all'indirizzo specificato. Partito senza lasciare un recapito…:) |
| 50x | Errore dovuto al server | Questi codici indicano che vi è un errore interno al server |
| 500 | INTERNAL ERROR | Il server a riscontrato una condizione inattesa che gli ha impedito di dare seguito alla richiesta (ne capitano di cose strane ai server…) |
| 501 | NOT IMPLEMENTED | Il server non supporta il servizio richiesto (non può sapere fare tutto…) |
| 502 | BAD GATEWAY | Il server ha ricevuto una risposta non valida dalla parte del server al quale ha cercato di accedere agendo come passerella o proxy |
| 503 | SERVICE UNAVAILABLE | Il server non può rispondervi in questo istante, dato che il traffico è troppo intenso (tutte le linee della vostra corrispondenza sono occupate, vogliate richiamare più tardi) |
| 504 | GATEWAY TIMEOUT | La risposta del server è troppo lunga rispetto al tempo durante il quale la passerella era pronta ad aspettarlo (il tempo che vi eravate dato è ora scaduto…) |
Per ulteriori informazioni sul protocollo HTTP, la cosa migliore è riferirsi alla RFC 1945 che spiega in maniera dettagliata il protocollo :