# 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 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

Richiesta 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

L'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

Il client deve eseguire ulteriori azioni per soddisfare la richiesta.

### 300 Multiple Choices

    Indica opzioni multiple per le 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

La 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.

### 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.

### 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.

### 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. 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

Il 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.