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.

  1. 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 '^]'.
    
  1. Immettere una riga di richiesta per inviare un percorso URL di richiesta GET / , utilizzando HTTP 1.1

    GET / HTTP/1.1
    
  2. 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
    
  3. 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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow