Hypertext Transfer Protocol: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
rivisto: tolti errori ed imprecisazioni. Aggiunto qualche chiarimento |
||
Riga 16:
[[zh:超文本传输协议]]
'''HTTP''' è l'acronimo di '''H'''yper'''T'''ext '''T'''ransfer '''P'''rotocol (protocollo di trasferimento di
un ipertesto). Usato come principale sistema per la trasmissione di informazioni
sul [[web]]. Le specifiche del protocollo sono attualmente in carica al [[W3C]] (World
Wide Web Consortium)
La prima versione dell'HTTP risale al [[1945]] ed frutto degli studi di [[Vannervar Bush]].
Venne pensato per la gestione in rete dei documenti [[HTML]].
L'HTTP funziona su un mecchanismo richiesta/risposta: il client esegue una
richiesta ed il server restituisce la risposta. Nell'uso comune il client
corrisponde al browser ed il server al sito web.
Vi sono quindi tue tipi di messaggi HTTP: messaggi richiesta e messaggi
risposta.
HTTP differisce da altri protocolli
Esiste anche una versione sicura del protocollo HTTP
Le versioni attualmente in uso dell'HTTP sono la 1.0 e la 1.1.
== Messagio di richiesta ==
Il messaggio richiesta è composto di tre parti:
* Linea di richiesta (request line)
* Sezione Header (informazioni aggiuntive)
* Body (corpo del messaggio)
=== Linea di richiesta ===
La linea di richiesta è composta dal metodo, URI e versione del protocollo.
Il metodo di richiesta può essere uno dei seguenti
* GET
* POST
* HEADER
* PUT
* DELETE
* TRACE
* CONNECT
l<nowiki>'</nowiki>'''[[URI]]''' sta per '''U'''niform '''R'''esource '''I'''dentifier ed indica l'oggetto della richiesta
(ad esempio la pagina web che si intende ottenere)
I metodi HTTP più comuni sono GET e POST.
Il metodo GET è usato per ottenere il contenuto della risorsa indicata come URI
(come può essere il contenuto di una pagina HTML ).
Una richiesta con metodo GET non prevede l'uso del body
Il metodo POST è usato di norma per inviare informazioni al server (ad esempio
i dati di un form)
In questo caso l'URI indica che cosa si sta inviando e il body ne indica il
contenuto.
=== Gli header della richiesta ===
Gli header di richiesta più comuni sono:
'''Host'''. Nome del server a cui si riferisce l'URI).
'''User-Agent'''. Identificazione del tipo di client: tipo browser, marca, versione
ecc.)
== Messaggio di risposta ==
Il messaggio di risposta è composto dalle seguenti tre parti:
* Linea di stato (status-line)
* Sezione header
* Body (contenuto della risposta)
=== Linea di stato ===
La linea di stato riporta un codice a tre cifre catalogato nel seguento modo:
1xx : Informational
2xx: Success
3xx: Redirection
4xx: Client error
5xx: Server error
Nel caso più comune il server risponde con un codice 200 (OK) e
fornisce contentuto nella sezione body.
Altri casi comuni sono:
'''302 Found'''. La risorsa è raggoiungibile con un altro URI indicato nel header
Locaion. Di norma i browser eseguono la richiesta all'URI indicato in modo
automatico senza interazione dell'utente.
'''404 Not Found'''. La risorsa richiesta non è stata trovata e non se ne conosce
l'ubicazione. Di solito avviene quando l'URI è indicato in modo incorretto od è
stato il contenuto dal server.
'''500 Internal Server Error'''. Il server non è in grado di risolvere la richiesta
per un suo problema interno.
=== Gli header della risposta ===
Gli header della risposta più comuni sono:
* '''Server'''. Indica il tipo la marca , la versione del server. Un po' l'equivalente dell'header di richiesta User-Agent
* '''Content-Type'''. Indica il tipo di contenuto restituito. La codifica di tali tipi (detti Media type) sono registrati presso '''[[IANA]]''' ('''I'''nternet '''A'''ssigned '''N'''umber '''A'''uthority ) e sono detti tipi '''[[MIME]]''' ('''M'''ultimedia '''I'''nternet '''M'''essage '''E'''xtensions), la loro codifica è descritta nel documento RFC 1521. I principali sono:
** '''text/html'''. Documento HTML)
** '''text/plaintext'''. Documento di testo non formattato)
** '''image/jpeg'''.Immagine di fromato '''[[JPEG]]'''
== Esempi di messaggi HTTP ==
Richiesta:
GET /wiki/Pagina_principale HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Accept: text/html, image/jpeg, image/png, text/*, image/*, */*
Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity
Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5
Accept-Language: en
Host: it.wikipedia.org
Risposta:
HTTP/1.0 200 OK
Date: Mon, 28 Jun 2004 10:47:31 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4
X-Powered-By: PHP/4.3.4
Vary: Accept-Encoding,Cookie
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Content-Language: it
Content-Type: text/html; charset=utf-8
Age: 7673
X-Cache: HIT from wikipedia.org
Connection: close
<HTML>
[ ...]
== Riferimenti ==
* [ftp://ftp.rfc-editor.org/in-notes/rfc1945.txt Specifiche HTTP 1.0]
* [ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt Specifiche HTTP 1.1]
|