Codici di stato HTTP
Quella che segue è la lista dei codici di stato e dei relativi messaggi definiti per il protocollo HTTP.
I codici di stato qui elencati sono quelli definiti dall'IETF (RFC 2616) e da alcune RFC con codici di stato addizionali e non standardizzati. Microsoft IIS può usare altri sotto codici decimali non standard per specificare più dettagli[1] non presenti in questo elenco. Le frasi presenti accanto ai codici sono gli esempi ufficiali dello standard, ma ne possono essere fornite anche altre di senso compiuto.
La prima cifra del codice di stato specifica una delle cinque categorie di risposta.
1xx Informational
modificaRichiesta ricevuta, continua l'elaborazione.
- 100 Continue
- Il server ha ricevuto l'header della richiesta e il client deve procedere ad inviare il corpo della richiesta (solitamente nelle richieste di tipo POST).
- 101 Switching Protocols
- Il richiedente ha richiesto di cambiare il protocollo in uso e il server è a conoscenza di ciò che dovrà fare.
- 102 Processing (WebDAV; RFC 2518)
- Questo codice indica che il server ha ricevuto e sta processando la richiesta, ma non ha ancora una risposta disponibile. È utilizzato questo codice per evitare che il client vada in timeout mentre aspetta la risposta.
- 103 Early Hints (RFC 8297)
- Utilizzato per restituire alcuni degli header di risposta, prima del messaggio finale HTTP.
2xx Success
modificaL'azione è stata ricevuta con successo, compresa ed accettata.
- 200 OK
- Risposta standard per le richieste HTTP andate a buon fine.
- 201 Created
- La richiesta è stata soddisfatta, restituendo la creazione di una nuova risorsa.
- 202 Accepted
- La richiesta di elaborazione è stata accettata ma non è ancora terminata.
- 203 Non-Authoritative Information.
- Il server è un transforming proxy (ad es. un Web Accelerator) che ha ricevuto un 200 OK dalla sua origine, ma sta restituendo una versione modificata della risposta dell'origine.
- 204 No Content
- Il server ha processato con successo la richiesta e non restituirà nessun contenuto.
- 205 Reset Content
- Il server ha processato con successo la richiesta e non restituirà nessun contenuto. Al contrario della risposta 204, questa richiede che il richiedente resetti il document view.
- 206 Partial Content
- Il server sta consegnando solo parti della risorsa (byte serving) a causa del range di un header inviato dal client. Il range header è usato dai client HTTP per abilitare il ripristino di download interrotti, o per frazionare un download in molteplici flussi simultanei.
- 207 Multi-Status
- In caso di risposte XML, quando più azioni possono essere richieste, i dettagli dei singoli stati sono dati nel corpo della risposta. Vedi WebDAV (RFC 4918) per le specifiche associate.
- 208 Already Reported
- Utilizzato all'interno di un elemento di risposta DAV: propstat per evitare di enumerare ripetutamente i membri interni di più collegamenti alla stessa raccolta.
- 226 IM Used (RFC 3229)
- Il server ha soddisfatto la richiesta della risorsa; la risposta consiste in una rappresentazione del risultato di più istanze di manipolazione, applicate all'istanza corrente.
3xx Redirect
modificaIl client deve eseguire ulteriori azioni per soddisfare la richiesta.
- 300 Multiple Choices
- Indica opzioni multiple per la risorse tra cui il client potrebbe scegliere (tramite una negoziazione di contenuto agent-driven). Per esempio, questo codice potrebbe essere usato per presentare più opzioni di formati video, per elencare file con estensioni diverse, o per suggerire una disambiguazione.
- 301 Moved Permanently
- Questa e tutte le future richieste andranno dirette ad un altro URI (specificato nell'header
Location
). - 302 Found
- Questo è il codice più usato ma anche un classico esempio di non aderenza agli standard nella pratica quotidiana. Infatti, le specifiche di HTTP/1.0 (RFC 1945) richiederebbero che il client esegua redirezioni temporanee (la descrizione originale era "Moved Temporarily"), ma i più diffusi browser l'hanno implementata come 303 descritta di seguito. Perciò, HTTP/1.1 ha aggiunto i codici di stato 303 e 307 per distinguere tra i due comportamenti. Comunque, la maggior parte delle applicazioni e dei framework web ancora usano il codice di stato 302 come se fosse il 303.
- 303 See Other (da HTTP/1.1)
- La risposta alla richiesta può essere trovata sotto un'altra URI usando il metodo GET.
- 304 Not Modified
- Indica che la risorsa non è stata modificata a causa della versione specificata dagli header di richiesta If-Modified-Since o If-None-Match. In questo caso, non c'è bisogno di ritrasmettere la singola risorsa perché il client dispone di una copia già precedentemente scaricata.
- 305 Use Proxy (da HTTP/1.1)
- La risorsa richiesta è disponibile solo passando da un proxy, il cui indirizzo viene fornito nella risposta. Per motivi di sicurezza, molti client HTTP (come Mozilla ed Internet Explorer) non gestiscono correttamente le risposte con questo codice di stato.
- 306 Switch Proxy
- Non più usato. Originariamente significava "Le richieste successive dovrebbero usare il proxy specificato".
- 307 Temporary Redirect (da HTTP/1.1)
- In quest'occasione, la richiesta dovrebbe essere ripetuta con un'altra URI, ma successive richieste possono essere ancora dirette a quella originale. In contrasto con 303, la richiesta di POST originale deve essere reiterata con un'altra richiesta di tipo POST.
- 308 Permanent Redirect (approvato come RFC sperimentale)
- Questa richiesta e le future dovrebbero essere fatte verso un altro URI. Le risposte 307 e 308 (come proposta) dovrebbero comportarsi similmente alla 302 e la 301, ma non prevedono un cambiamento di metodo.
4xx Client Error
modificaLa richiesta è sintatticamente scorretta o non può essere soddisfatta.
- 400 Bad Request
- La richiesta non può essere soddisfatta a causa di errori di sintassi.
- 401 Unauthorized
- Simile a 403/Forbidden, ma pensato per essere usato quando l'autenticazione è possibile ma è fallita o non può essere fornita. Vedi anche basic access authentication e digest access authentication.
- 402 Payment Required
- L'intendimento originale prevedeva un suo utilizzo per realizzare meccanismi di digital cash/micropagamento, ma questo non si è mai verificato ed il codice non è mai stato utilizzato.
- 403 Forbidden
- La richiesta è legittima ma il server si rifiuta di soddisfarla. Contrariamente al codice 401 Unauthorized, l'autenticazione non ha effetto.[2]
- 404 Not Found
- La risorsa richiesta non è stata trovata ma in futuro potrebbe essere disponibile.
- 405 Method Not Allowed
- La richiesta è stata eseguita usando un metodo non permesso. Ad esempio questo accade quando si usa il metodo GET per inviare dati da presentare con un metodo POST.
- 406 Not Acceptable
- La risorsa richiesta è solo in grado di generare contenuti non accettabili secondo la header Accept inviato nella richiesta.[3]
- 407 Proxy Authentication Required
- Per proseguire, il client deve autenticarsi sul proxy.
- 408 Request Timeout
- Il tempo per inviare la richiesta è scaduto e il server ha terminato la connessione.
- 409 Conflict
- La richiesta non può essere portata a termine a causa di un conflitto con lo stato attuale della risorsa.
- Questo codice è permesso solo nei casi in cui ci si aspetta che l'utente possa risolvere il conflitto e ripetere la richiesta.
- Il corpo della risposta dovrebbe contenere abbastanza informazioni per individuare la causa del conflitto.[4]
- 410 Gone
- Indica che la risorsa richiesta non è più disponibile e non lo sarà più in futuro.
- 411 Length Required
- La richiesta non specifica la propria dimensione come richiesto dalla risorsa richiesta.
- 412 Precondition Failed
- Il server non soddisfa una delle precondizioni che il richiedente ha inserito nella richiesta.
- 413 Request Entity Too Large
- La richiesta è più grande di quanto il server possa gestire.
- 414 Request-URI Too Long
- L'URI richiesto è troppo grande per essere elaborato dal server.
- 415 Unsupported Media Type
- L'entità della richiesta è di un tipo non accettato dal server o dalla risorsa richiesta.
- 416 Requested Range Not Satisfiable
- Il client ha richiesto un frammento di un file, ma il server non riesce a restituire quel frammento.
- 417 Expectation Failed
- Il server non rispetta i requisiti del campo header di una richiesta Expect.
- 418 I'm a teapot
- Questo è un tipico pesce d'aprile dell'IETF.[5] Solitamente non viene mai implementato in nessun server HTTP. L'RFC specifica che questo codice di stato dovrebbe essere restituito dalle teiere a cui viene erroneamente richiesto di preparare del caffè. Questo stato viene utilizzato come easter egg in alcuni siti, come Google.
- 420 Enhance your calm
- Restituito dalle Twitter Search e Trends API Quando il client è rate-limited, ovvero quando viene definito un numero massimo di chiamate verso le API in un breve tempo stabilito.
- 422 Unprocessable Entity
- Il server comprende il tipo di contenuto dell'entità richiesta e la sintassi della richiesta è corretta, ma non è in grado di processare le istruzioni contenute nella richiesta.
- 426 Upgrade Required (RFC 2817)
- Il client dovrebbe cambiare il protocollo ed usare ad esempio il TLS/1.0.
- 429 Too many requests
- Il client ha effettuato troppe richieste in un intervallo di tempo ridotto. Destinato all'uso con schemi di limitazione della velocità (rate-limiting schemes).
- 431 Request Header Fields Too Large
- Il server si rifiuta di elaborare la richiesta, perché le intestazioni HTTP (headers) sono troppo grandi.
- 449 Retry With
- Estensione di Microsoft: The request should be retried after doing the appropriate action.
- 451 Unavailable For Legal Reasons (Approvato da Internet Engineering Steering Group IESG)
- Stato non obbligatorio utilizzato quando l'accesso alla risorsa è limitato per ragioni legali come censura o mandati governativi. Probabilmente fa riferimento al romanzo distopico Fahrenheit 451.
5xx Server Error
modificaIl server ha fallito nel soddisfare una richiesta apparentemente valida.
- 500 Internal Server Error
- Messaggio di errore generico senza alcun dettaglio.
- 501 Not Implemented
- Il server non è in grado di soddisfare il metodo della richiesta.
- 502 Bad Gateway
- Il server si sta comportando come un gateway o un proxy e ha ricevuto una risposta invalida dal server di upstream.
- 503 Service Unavailable
- Il server non è al momento disponibile. Generalmente è una condizione temporanea.
- 504 Gateway Timeout
- Il server si sta comportando come un gateway o un proxy e non ha ricevuto una risposta tempestiva dal server di upstream.
- 505 HTTP Version Not Supported
- Il server non supporta la versione HTTP della richiesta.
- 509 Bandwidth Limit Exceeded
- Questo codice di stato, benché usato da molti server, non è un codice di stato ufficiale in quanto non è specificato in alcuna RFC.
Note
modifica- ^ (EN) The HTTP status codes in IIS 7.0, su support.microsoft.com, Microsoft, 14 luglio 2009. URL consultato il 1º aprile 2009.
- ^ https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.4
- ^ https://tools.ietf.org/html/rfc2616#section-10.4.7 REF=rfc2616
- ^ https://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-18#section-7.4.10
- ^ (EN) RFC 2324 — Hyper Text Coffee Pot Control Protocol, su datatracker.ietf.org, Internet Engineering Task Force.
Voci correlate
modificaAltri progetti
modifica- Wikimedia Commons contiene immagini o altri file sui codici di stato HTTP
Collegamenti esterni
modifica- (EN) Tara Ramanathan, list of HTTP status codes, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
- Official W3C HTTP status code specification, su w3.org.