HTTP
Richieste HTTP
Ricerca…
Parametri
Metodo HTTP | Scopo |
---|---|
OPTIONS | Recupera informazioni sulle opzioni di comunicazione (metodi disponibili e intestazioni) disponibili sull'URI della richiesta specificata. |
GET | Recupera i dati identificati dall'URI della richiesta o i dati prodotti dallo script disponibili all'URI della richiesta. |
HEAD | Identico a GET tranne per il fatto che nessun corpo del messaggio verrà restituito dal server: solo intestazioni. |
POST | Inviare un blocco di dati (specificato nel corpo del messaggio) al server per l'aggiunta al reso specificato nell'URI della richiesta. Più comunemente usato per l'elaborazione dei moduli. |
PUT | Memorizza le informazioni incluse (nel corpo del messaggio) come una risorsa nuova o aggiornata sotto l'URI della richiesta specificata. |
DELETE | Elimina, o accoda per l'eliminazione, la risorsa identificata dall'URI della richiesta. |
TRACE | Essenzialmente un comando echo: un server HTTP funzionante e conforme deve inviare l'intera richiesta come corpo di una risposta 200 (OK). |
Osservazioni
Il metodo CONNECT
è riservato dalle specifiche delle definizioni dei metodi da utilizzare con i proxy che sono in grado di passare da modalità proxy e tunneling (ad esempio per il tunneling SSL).
Invio manuale di una richiesta HTTP minima tramite Telnet
Questo esempio dimostra che HTTP è un protocollo di comunicazioni Internet basato su testo e mostra una richiesta HTTP di base e la corrispondente risposta HTTP.
È possibile utilizzare Telnet per inviare manualmente una richiesta HTTP minima dalla riga di comando, come indicato di seguito.
Avvia una sessione Telnet sul server web
www.example.org
sulla porta 80:telnet www.example.org 80
Telnet segnala di essere connesso al server:
Connected to www.example.org. Escape character is '^]'.
Immettere una riga di richiesta per inviare un percorso URL di richiesta GET
/
, utilizzando HTTP 1.1GET / HTTP/1.1
Immettere una riga del campo dell'intestazione HTTP per identificare la parte del nome host dell'URL richiesto, che è richiesta in HTTP 1.1
Host: www.example.org
Inserisci una riga vuota per completare la richiesta.
Il server Web invia la risposta HTTP, che appare nella sessione Telnet.
La sessione completa è la seguente. La prima riga della risposta è la riga di stato HTTP , che include il codice di stato 200 e il testo di stato OK , che indicano che la richiesta è stata elaborata correttamente. Questo è seguito da un numero di campi di intestazione HTTP, una riga vuota e la risposta HTML.
$ telnet www.example.org 80
Trying 2606:2800:220:1:248:1893:25c8:1946...
Connected to www.example.org.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.example.org
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/html
Date: Thu, 21 Jul 2016 15:56:05 GMT
Etag: "359670651"
Expires: Thu, 28 Jul 2016 15:56:05 GMT
Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
Server: ECS (lga/1318)
Vary: Accept-Encoding
X-Cache: HIT
x-ec-custom-error: 1
Content-Length: 1270
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You may use this
domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
(elemento di style
e righe vuote rimosse dalla risposta HTML, per brevità.)
Formato di richiesta di base
In HTTP 1.1, una richiesta HTTP minima è composta da una riga di richiesta e un'intestazione Host
:
GET /search HTTP/1.1 \r\n
Host: google.com \r\n
\r\n
La prima riga ha questo formato:
Method Request-URI HTTP-Version CRLF
Method
dovrebbe essere un metodo HTTP valido; uno di [1] [2] :
-
OPTIONS
-
GET
-
HEAD
-
POST
-
PUT
-
DELETE
-
PATCH
-
TRACE
-
CONNECT
Request-URI
indica l'URI o il percorso della risorsa richiesta dal client. Può essere o:
- un URI pienamente qualificato, inclusi schema, host, porta (e) opzionale e percorso; o
- un percorso, nel qual caso l'host deve essere specificato nell'intestazione
Host
HTTP-Version
indica la versione del protocollo HTTP che il client sta usando. Per le richieste HTTP 1.1, questo deve sempre essere HTTP/1.1
.
La riga di richiesta termina con una coppia di feed di ritorno riga di trasporto, solitamente rappresentata da \r\n
.
Richiedi i campi dell'intestazione
I campi intestazione (di solito chiamati semplicemente "intestazioni") possono essere aggiunti a una richiesta HTTP per fornire ulteriori informazioni con la richiesta. Un'intestazione ha una semantica simile ai parametri passati a un metodo in qualsiasi linguaggio di programmazione che supporti tali elementi.
Una richiesta con intestazioni Host
, User-Agent
e Referer
potrebbe essere simile a questa:
GET /search HTTP/1.1 \r\n
Host: google.com \r\n
User-Agent: Chrome/54.0.2803.1 \r\n
Referer: http://google.com/ \r\n
\r\n
Un elenco completo delle intestazioni delle richieste HTTP 1.1 supportate può essere trovato nelle specifiche . I più comuni sono:
-
Host
: la parte del nome host dell'URL della richiesta (richiesta in HTTP / 1.1) -
User-Agent
- una stringa che rappresenta la richiesta dell'utente agente; -
Referer
: l'URI di cui il cliente è stato indirizzato qui; e -
If-Modified-Since
: indica una data che il server può utilizzare per determinare se una risorsa è stata modificata e indica che il client può utilizzare una copia memorizzata nella cache, se non è stata così.
Un'intestazione dovrebbe essere formata come Name: Value CRLF
. Name
è il nome dell'intestazione, ad esempio User-Agent
. Value
è il dato assegnato ad esso e la linea dovrebbe terminare con un CRLF. I nomi delle intestazioni non fanno distinzione tra maiuscole e minuscole e possono utilizzare solo lettere, cifre e caratteri !#$%&'*+-.^_`|~
(RFC7230 sezione 3.2.6 Componenti valore campo ).
Il nome del campo dell'intestazione del Referer
è un refuso per "referrer", introdotto accidentalmente in RFC1945 .
Corpi dei messaggi
Alcune richieste HTTP possono contenere un corpo del messaggio. Si tratta di dati aggiuntivi che il server utilizzerà per elaborare la richiesta. I corpi dei messaggi vengono spesso utilizzati nelle richieste POST o PATCH e PUT, per fornire nuovi dati che il server deve applicare a una risorsa.
Le richieste che includono un corpo del messaggio dovrebbero sempre includere la sua lunghezza in byte con intestazione Content-Length
.
Un corpo del messaggio è incluso dopo tutte le intestazioni e un doppio CRLF. Un esempio di richiesta PUT con un corpo potrebbe essere simile a questo:
PUT /files/129742 HTTP/1.1\r\n
Host: example.com\r\n
User-Agent: Chrome/54.0.2803.1\r\n
Content-Length: 202\r\n
\r\n
This is a message body. All content in this message body should be stored under the
/files/129742 path, as specified by the PUT specification. The message body does
not have to be terminated with CRLF.
HEAD
richieste HEAD
e TRACE
non devono includere un corpo del messaggio.