HTTP
Risposte HTTP
Ricerca…
Parametri
Codice di stato | Frase-motivo - Descrizione |
---|---|
100 | Continua : il client deve inviare la seguente parte di una richiesta multiparte. |
101 | Switching Protocols - il server sta cambiando la versione o il tipo di protocollo utilizzato in questa comunicazione. |
200 | OK : il server ha ricevuto e completato la richiesta del cliente. |
201 | Creato : il server ha accettato la richiesta e creato una nuova risorsa, disponibile sotto l'URI nell'intestazione Location . |
202 | Accettato : il server ha ricevuto e accettato la richiesta del cliente, ma non ha ancora iniziato o completato l'elaborazione. |
203 | Informazioni non autorevoli : il server restituisce dati che potrebbero essere un sotto o superset delle informazioni disponibili sul server originale. Utilizzato principalmente dai proxy. |
204 | Nessun contenuto - usato al posto di 200 (OK) quando non c'è alcun corpo alla risposta. |
205 | Resetta il contenuto - identico a 204 (nessun contenuto), ma il client dovrebbe ricaricare la vista del documento attivo. |
206 | Contenuto parziale : utilizzato al posto di 200 (OK) quando il client ha richiesto un'intestazione Range . |
300 | Scelte multiple : la risorsa richiesta è disponibile su più URI e il client deve reindirizzare la richiesta a un URI specificato nell'elenco nel corpo del messaggio. |
301 | Spostato in modo permanente - la risorsa richiesta non è più disponibile in questo URI e il client deve reindirizzare questa e tutte le future richieste all'URI specificato nell'intestazione Location . |
302 | Trovato : la risorsa risiede temporaneamente in un URI diverso. Questa richiesta dovrebbe essere reindirizzata sulla conferma dell'utente all'URI nell'intestazione Location , ma le richieste future non dovrebbero essere modificate. |
303 | Vedi Altro - molto simile a 302 (Trovato), ma non richiede l'input dell'utente per reindirizzare all'URI fornito. L'URI fornito deve essere recuperato con una richiesta GET. |
304 | Non modificato : il client ha inviato un'intestazione If-Modified-Since o simile e la risorsa non è stata modificata da quel momento; il client dovrebbe visualizzare una copia memorizzata nella cache della risorsa. |
305 | Usa Proxy : la risorsa richiesta deve essere nuovamente richiesta tramite il proxy specificato nel campo dell'intestazione Location . |
307 | Redirect temporaneo - identico a 302 (Trovato), ma i client HTTP 1.0 non supportano 307 risposte. |
400 | Richiesta non valida: il client ha inviato una richiesta non valida contenente errori di sintassi e deve modificare la richiesta per correggerla prima di ripeterla. |
401 | Non autorizzato : la risorsa richiesta non è disponibile senza autenticazione. Il client può ripetere la richiesta utilizzando un'intestazione Authorization per fornire i dettagli di autenticazione. |
402 | Pagamento richiesto : codice di stato riservato e non specificato per l'utilizzo da parte di applicazioni che richiedono abbonamenti utente per visualizzare il contenuto. |
403 | Proibito : il server comprende la richiesta, ma rifiuta di soddisfarla a causa dei controlli di accesso esistenti. La richiesta non dovrebbe essere ripetuta. |
404 | Non trovato - non esiste alcuna risorsa disponibile su questo server che corrisponda all'URI richiesto. Può essere usato al posto di 403 per evitare di esporre i dettagli del controllo accessi. |
405 | Metodo non consentito : la risorsa non supporta il metodo di richiesta (verbo HTTP); l'intestazione Allow elenca i metodi di richiesta accettabili. |
406 | Non accettabile : la risorsa ha caratteristiche che violano le intestazioni di accettazione inviate nella richiesta. |
407 | Autenticazione proxy richiesta - simile a 401 (non autorizzato), ma indica che il client deve prima autenticarsi con il proxy intermedio. |
408 | Timeout richiesta : il server si aspettava un'altra richiesta dal client, ma nessuna era stata fornita entro un intervallo di tempo accettabile. |
409 | Conflitto : la richiesta non può essere completata perché è in conflitto con lo stato corrente della risorsa. |
410 | Andato - simile a 404 (non trovato), ma indica una rimozione permanente. Nessun indirizzo di inoltro disponibile. |
411 | Lunghezza richiesta : il client non ha specificato un'intestazione Content-Length valida e deve farlo prima che il server accetti questa richiesta. |
412 | Precondizione non riuscita : la risorsa non è disponibile con tutte le condizioni specificate dagli header condizionali inviati dal client. |
413 | Richiesta Entità troppo grande - il server non è attualmente in grado di elaborare un corpo del messaggio della lunghezza inviata dal client. |
414 | URI di richiesta troppo lungo : il server rifiuta la richiesta perché l'URI di richiesta è più lungo di quanto il server sia disposto a interpretare. |
415 | Tipo di supporto non supportato : il server non supporta il MIME o il tipo di supporto specificato dal client e non può soddisfare questa richiesta. |
416 | Intervallo richiesto non soddisfacente : il client ha richiesto un intervallo di byte, ma il server non è in grado di fornire il contenuto a tale specifica. |
417 | Expectation Failed : i vincoli specificati dal client nell'intestazione Expect che il server non è in grado di soddisfare. |
500 | Errore interno del server : il server ha riscontrato una condizione o un errore imprevisto che impedisce di completare questa richiesta. |
501 | Non implementato : il server non supporta la funzionalità richiesta per completare la richiesta. Solitamente utilizzato per indicare un metodo di richiesta che non è supportato su alcuna risorsa. |
502 | Bad Gateway : il server è un proxy e ha ricevuto una risposta non valida dal server upstream durante l'elaborazione di questa richiesta. |
503 | Servizio non disponibile : il server è sottoposto a un carico elevato o in fase di manutenzione e al momento non è in grado di soddisfare questa richiesta. |
504 | Timeout gateway : il server è un proxy e non ha ricevuto una risposta dal server upstream in modo tempestivo. |
505 | Versione HTTP non supportata : il server non supporta la versione del protocollo HTTP con cui il client ha effettuato la richiesta. |
Formato di risposta di base
Quando un server HTTP riceve una richiesta HTTP ben formata, deve elaborare le informazioni contenute nella richiesta e restituire una risposta al client. Una semplice risposta HTTP 1.1 può apparire come una delle seguenti, solitamente seguita da un numero di campi di intestazione e, eventualmente, da un corpo di risposta:
HTTP/1.1 200 OK \r\n
HTTP/1.1 404 Not Found \r\n
HTTP/1.1 503 Service Unavailable \r\n
Una semplice risposta HTTP 1.1 ha questo formato:
HTTP-Version Status-Code Reason-Phrase CRLF
Come in una richiesta, HTTP-Version
indica la versione del protocollo HTTP in uso; per HTTP 1.1 questa deve sempre essere la stringa HTTP/1.1
.
Status-Code
è un Status-Code
a tre cifre che indica lo stato della richiesta del cliente. La prima cifra di questo codice è la classe di stato , che colloca il codice di stato in una delle 5 categorie di risposta [1] :
-
1xx
Informativo : il server ha ricevuto la richiesta e l'elaborazione continua -
2xx
Successo : il server ha accettato ed elaborato la richiesta - Reindirizzamento
3xx
: è necessario un ulteriore intervento da parte del cliente per completare la richiesta - Errori del client
4xx
: il client ha inviato una richiesta che non era valida o che non può essere soddisfatta - Errori del server
5xx
: la richiesta era valida, ma al momento il server non è in grado di soddisfarla
Reason-Phrase
è una breve descrizione del codice di stato. Ad esempio, il codice 200
ha una frase di motivazione di OK
; il codice 404
ha una frase di Not Found
. Un elenco completo di frasi di motivazione è disponibile in Parametri, sotto o nelle specifiche HTTP .
La linea termina con una coppia di trasporto a riga di ritorno, solitamente rappresentata da \r\n
.
Intestazioni aggiuntive
Come una richiesta HTTP, una risposta HTTP può includere intestazioni aggiuntive per modificare o aumentare la risposta che fornisce.
Un elenco completo delle intestazioni disponibili è definito nel §6.2 della specifica . Le intestazioni più comunemente utilizzate sono:
-
Server
, che funziona come un'intestazione di richiestaUser-Agent
per il server; -
Location
, che viene utilizzata sulle risposte di stato 201 e 3xx per indicare un URI da reindirizzare a; e -
ETag
, che è un identificativo univoco per questa versione della risorsa restituita per consentire ai client di memorizzare nella cache la risposta.
Le intestazioni di risposta vengono dopo la riga di stato e, come per le intestazioni delle richieste, sono formate come tali:
Name: Value CRLF
Name
fornisce il nome dell'intestazione, come ETag
o Location
, e Value
fornisce il valore che il server sta impostando per quella intestazione. La linea termina con un CRLF.
Una risposta con le intestazioni potrebbe essere simile a questa:
HTTP/1.1 201 Created \r\n
Server: WEBrick/1.3.1 \r\n
Location: http://example.com/files/129742 \r\n
Corpi dei messaggi
Come per i corpi delle richieste , le risposte HTTP possono contenere un corpo del messaggio. Ciò fornisce dati aggiuntivi che il cliente elaborerà. In particolare, 200 risposte OK a una richiesta GET ben formata dovrebbero sempre fornire un corpo del messaggio contenente i dati richiesti. (Se non ce n'è, 204 No Content è una risposta più appropriata).
Un corpo del messaggio è incluso dopo tutte le intestazioni e un doppio CRLF. Per quanto riguarda le richieste, la sua lunghezza in byte dovrebbe essere data con l'intestazione Content-Length
. Una risposta positiva a una richiesta GET, quindi, potrebbe essere simile a questa:
HTTP/1.1 200 OK\r\n
Server: WEBrick/1.3.1\r\n
Content-Length: 39\r\n
ETag: 4f7e2ed02b836f60716a7a3227e2b5bda7ee12c53be282a5459d7851c2b4fdfd\r\n
\r\n
Nobody expects the Spanish Inquisition.