Elenco dei codici di stato HTTP
Tutti i codici di stato HTTP, dalla serie 1xx alla 5xx, in un unico elenco. Un riferimento per sviluppatori che ne illustra significato, cause più frequenti e rimedi, con una ricerca dettagliata per numero di codice.
| Codice | Nome | Significato | Cause più frequenti |
|---|---|---|---|
| 1xx — Risposte informative | |||
| 100 | Continue (Continua) | Indica che la prima parte della richiesta è stata accettata e che il cliente può inviare il resto. | Si riceve quando, prima di inviare un corpo voluminoso, si aggiunge l'intestazione Expect: 100-continue. |
| 101 | Switching Protocols (Cambio di protocollo) | Indica che il servente accoglie la richiesta dell'intestazione Upgrade e passa a un altro protocollo. | Risposta normale che si osserva all'apertura di una connessione WebSocket. |
| 102 | Processing (Elaborazione in corso) | Indica che il servente ha accettato la richiesta e la sta elaborando, ma non ha ancora pronta una risposta; appartiene a WebDAV. | Viene inviata nelle operazioni WebDAV lunghe per evitare che scada il tempo. |
| 103 | Early Hints (Suggerimenti anticipati) | Anticipa, prima della risposta definitiva, intestazioni come Link, permettendo il precaricamento delle risorse. | Le reti di distribuzione dei contenuti e i serventi intermediari inversi la aggiungono per accelerare il precaricamento di fogli di stile e script. |
| 2xx — Successo | |||
| 200 | OK (Successo) | Indica che la richiesta è stata elaborata correttamente: è la risposta di successo più comune. | |
| 201 | Created (Creato) | Indica che in esito alla richiesta è stata creata una nuova risorsa. | La restituiscono le interfacce che creano risorse con il metodo POST. È consuetudine indicarne l'indirizzo nell'intestazione Location. |
| 202 | Accepted (Accettato) | Indica che la richiesta è stata accettata ma l'elaborazione non è ancora conclusa: è il caso dell'elaborazione asincrona. | Si usa nelle interfacce asincrone che si limitano ad accodare il lavoro e nei punti di accesso che raccolgono elaborazioni differite. |
| 204 | No Content (Nessun contenuto) | Indica che l'operazione è riuscita ma non c'è alcun corpo da restituire. | Si impiega alla riuscita di una cancellazione oppure nelle interfacce che, dopo un aggiornamento con PUT, non restituiscono alcun contenuto. |
| 206 | Partial Content (Contenuto parziale) | Indica che, in risposta all'intestazione Range del cliente, è stata restituita soltanto una parte della risorsa. | Risposta normale nella riproduzione di filmati con avanzamento rapido e nella ripresa di uno scaricamento interrotto. |
| 3xx — Reindirizzamento | |||
| 301 | Moved Permanently (Spostato in modo permanente) | Indica che la risorsa si è spostata in modo permanente a un nuovo indirizzo. I motori di ricerca trasferiscono la valutazione al nuovo indirizzo. | Si usa per reindirizzare dai vecchi indirizzi quando si modifica la struttura degli indirizzi o si migra a un dominio proprio. |
| 302 | Found (Trovato temporaneamente) | Indica che la risorsa si trova temporaneamente a un altro indirizzo. Per gli spostamenti definitivi si deve usare il 301. | Si usa spesso per gli smistamenti provvisori durante la manutenzione e per il reindirizzamento successivo all'accesso. |
| 303 | See Other (Vedi altrove) | Indica che l'esito dell'elaborazione va recuperato con un GET a un altro indirizzo: è lo schema POST-reindirizzamento-GET. | Si usa dopo l'invio di un modulo con POST per evitare la finestra di reinvio del navigatore. |
| 304 | Not Modified (Non modificato) | Indica che la risorsa in cache non è cambiata e che il corpo non viene ritrasmesso. | Si riceve nelle richieste condizionali con If-None-Match o If-Modified-Since quando la cache è ancora valida. |
| 307 | Temporary Redirect (Reindirizzamento temporaneo) | Reindirizzamento temporaneo che, a differenza del 302, ripete la richiesta senza modificarne metodo e corpo. | Si usa nelle interfacce che devono reindirizzare conservando il corpo di una richiesta POST o PUT. |
| 308 | Permanent Redirect (Reindirizzamento permanente) | Reindirizzamento permanente che, a differenza del 301, ripete la richiesta senza modificarne metodo e corpo. | Si usa quando si vuole uno spostamento definitivo conservando il metodo, per esempio nel passaggio a una nuova versione di un'interfaccia. |
| 4xx — Errori del cliente | |||
| 400 | Bad Request (Richiesta non valida) | Indica che la sintassi o i parametri della richiesta non sono validi e il servente non riesce a interpretarla. | Errore di sintassi nel JSON, parametro obbligatorio mancante o tipo di dato non corrispondente. |
| 401 | Unauthorized (Errore di autenticazione) | Indica l'assenza o l'invalidità delle credenziali: in realtà significa «non autenticato». | Gettone scaduto, intestazione Authorization non inviata o chiave dell'interfaccia errata. |
| 402 | Payment Required (Pagamento richiesto) | Stato riservato a usi futuri, talvolta impiegato quando è richiesto un pagamento. | Alcune interfacce lo usano a modo proprio per segnalare il superamento dei limiti d'uso o la scadenza di un piano a pagamento. |
| 403 | Forbidden (Vietato) | Indica che il servente ha compreso la richiesta ma la rifiuta per mancanza di autorizzazioni. | Permessi insufficienti, restrizioni per indirizzo IP, violazione delle regole sulla condivisione fra origini diverse o permessi errati sui file. |
| 404 | Not Found (Non trovato) | Indica che la risorsa richiesta non è stata trovata. | Percorso non registrato, errore di digitazione nell'indirizzo o accesso a una risorsa già eliminata. |
| 405 | Method Not Allowed (Metodo non consentito) | Indica che la risorsa esiste ma il metodo HTTP indicato non è consentito. | Tipicamente uno scambio di metodo, come l'invio di un POST a un punto di accesso che ammette solo GET. |
| 406 | Not Acceptable (Non accettabile) | Indica che il servente non può fornire il formato richiesto dall'intestazione Accept del cliente. | Si verifica, per esempio, quando si indica Accept: application/xml a un'interfaccia che restituisce soltanto JSON. |
| 408 | Request Timeout (Tempo della richiesta scaduto) | Indica che il tempo a disposizione del servente è scaduto mentre attendeva il completamento della richiesta del cliente. | Collegamento lento, caricamento di file enormi o blocco dell'elaborazione dal lato del cliente. |
| 409 | Conflict (Conflitto) | Indica che la richiesta è in conflitto con lo stato attuale della risorsa. | Fallimento di un blocco ottimistico per modifiche simultanee oppure tentativo di creare un duplicato. |
| 410 | Gone (Non più disponibile) | Indica che la risorsa è stata eliminata in modo permanente e non esisterà più: è un segnale più forte del 404. | Si usa per dichiarare ai motori di ricerca che il contenuto è stato eliminato o dismesso di proposito. |
| 413 | Content Too Large (Contenuto troppo grande) | Indica che il corpo della richiesta supera la dimensione ammessa dal servente. | Superamento del limite per il caricamento dei file oppure limiti di dimensione troppo stretti nella configurazione di Nginx o di PHP. |
| 414 | URI Too Long (Indirizzo troppo lungo) | Indica che l'indirizzo della richiesta supera la lunghezza che il servente può gestire. | Si verifica facilmente quando si stipano molti dati nei parametri di interrogazione di una richiesta GET. |
| 415 | Unsupported Media Type (Tipo di supporto non gestito) | Indica che il servente non gestisce il tipo di contenuto indicato per il corpo della richiesta. | Spesso un errore nell'impostazione dell'intestazione, per esempio l'invio con Content-Type: text/plain a un'interfaccia JSON. |
| 422 | Unprocessable Content (Contenuto non elaborabile) | Indica che la sintassi è corretta ma la convalida semantica non è stata superata. | Si usa di frequente per restituire gli errori di convalida di un modulo: campi obbligatori mancanti o formati errati. |
| 425 | Too Early (Troppo presto) | Indica che il servente rifiuta di elaborare la richiesta contenuta nei dati anticipati per il rischio di attacchi con riproposizione. | Può essere restituito come contromisura agli attacchi di ripetizione che sfruttano i dati a viaggio zero di TLS 1.3. |
| 429 | Too Many Requests (Troppe richieste) | Indica che il numero di richieste in un dato intervallo ha superato il limite di frequenza. | Superamento del limite di frequenza dell'interfaccia. L'intestazione Retry-After indica spesso quanto attendere prima di riprovare. |
| 451 | Unavailable For Legal Reasons (Non disponibile per motivi legali) | Indica che l'accesso al contenuto è vietato per un'imposizione legale, per esempio un provvedimento dell'autorità giudiziaria. | Si riceve quando il fornitore del contenuto ne blocca l'accesso a seguito di una segnalazione per violazione del diritto d'autore o di una normativa nazionale. |
| 5xx — Errori del servente | |||
| 500 | Internal Server Error (Errore interno del servente) | Indica che sul servente si è verificato un errore imprevisto e la richiesta non è stata elaborata. | Le cause sono le più varie: eccezione non gestita dall'applicazione, errore di configurazione, connessione alla base di dati fallita. |
| 501 | Not Implemented (Non implementato) | Indica che il servente non gestisce il metodo richiesto. | Si verifica inviando a un'implementazione datata un metodo HTTP non previsto, per esempio PATCH. |
| 502 | Bad Gateway (Passerella non valida) | Indica che un servente intermediario o una passerella ha ricevuto una risposta non valida dal servente a monte. | Tipicamente l'arresto o il blocco improvviso del servente applicativo a monte. |
| 503 | Service Unavailable (Servizio non disponibile) | Indica che il servente è temporaneamente sovraccarico o in manutenzione e non può elaborare la richiesta. | Esaurimento delle risorse per carico elevato oppure sospensione temporanea per manutenzione programmata. |
| 504 | Gateway Timeout (Tempo della passerella scaduto) | Indica che un servente intermediario o una passerella non ha ricevuto in tempo la risposta dal servente a monte. | Elaborazione troppo lunga nella parte interna del sistema, latenza di rete o blocco del servente a monte. |
| 505 | HTTP Version Not Supported (Versione HTTP non gestita) | Indica che il servente non gestisce la versione di HTTP usata nella richiesta. | Si verifica quando un cliente datato o un intermediario mal configurato comunica con una versione di HTTP inattesa. |
| 507 | Insufficient Storage (Spazio di archiviazione insufficiente) | Indica che il servente non dispone di spazio di archiviazione sufficiente per completare la richiesta; appartiene a WebDAV. | Si riceve quando le operazioni di salvataggio dei file falliscono per mancanza di spazio su disco. |
| 508 | Loop Detected (Ciclo rilevato) | Indica che durante l'elaborazione della richiesta è stato rilevato un ciclo infinito; appartiene a WebDAV. | Si verifica in presenza di riferimenti circolari nelle associazioni di WebDAV. |
| 511 | Network Authentication Required (Autenticazione di rete richiesta) | Indica che il cliente deve autenticarsi per ottenere l'accesso alla rete. | Si usa per reindirizzare al portale di accesso delle reti senza fili pubbliche. |
Cosa sono i codici di stato HTTP — Le categorie da 1xx a 5xx
Un codice di stato HTTP è un numero di tre cifre che un server web restituisce per comunicare a un client (un browser o un'applicazione che chiama un'API) l'esito di una richiesta. La prima cifra indica la categoria generale: 1xx per le risposte informative, 2xx per il successo, 3xx per un reindirizzamento, 4xx per un errore lato client e 5xx per un errore lato server. Conoscere questa semplice regola permette già di intuire il significato approssimativo di un codice sconosciuto ancor prima di cercarlo.
Questo strumento funge da riferimento rapido per conoscere il significato esatto e le cause più frequenti di qualsiasi codice di stato incontrato durante lo sviluppo o il debug. Oltre al campo di ricerca per inserire un numero di codice, offre una tabella filtrabile con tutti i codici, risultando utile in molte situazioni — sviluppo di API, debug o audit SEO — ogni volta che serve confermare il significato reale di un codice.
Come usare l'elenco dei codici di stato HTTP
- Inserisci il codice da cercare Digita un numero di codice come 404 o 500 nel campo di ricerca in alto: nome, significato e cause più frequenti compaiono immediatamente.
- Filtra la tabella per parola chiave Se non conosci il numero, digita una parola chiave come "reindirizzamento" o "autenticazione" nel campo filtro della tabella sottostante per trovare i codici corrispondenti.
- Usa le intestazioni di categoria per orientarti La tabella è organizzata per categorie da 1xx a 5xx: consultare prima la categoria generale rende più rapido individuare il codice cercato.
- Leggi le cause più frequenti per restringere il campo Controlla la colonna "Cause più frequenti" di ciascun codice e verifica se qualcuna corrisponde alla tua situazione, come un errore di configurazione, un timeout o permessi insufficienti.
Consigli per sfruttarlo al meglio
- Il 404 e il 410 si somigliano, ma il 410 dichiara che il contenuto è stato eliminato di proposito e non tornerà. Per i contenuti privi di una destinazione di reindirizzamento, il 410 rende più chiara l'intenzione ai motori di ricerca.
- Il 301 e il 308, come il 302 e il 307, condividono il carattere permanente o temporaneo, ma il 308 e il 307 si distinguono perché ripetono la richiesta conservando il corpo di un POST.
- Ricevuto un 429, cioè «troppe richieste», la buona educazione vuole che si legga il numero di secondi nell'intestazione
Retry-Aftere si attenda prima di riprovare. Ignorarlo e insistere può portare a un blocco. - Gli errori della serie 5xx indicano un problema del servente e non un difetto del cliente: prima ancora del contenuto della vostra richiesta, verificate quindi lo stato di funzionamento del servente e i suoi registri.
- Nella scheda della rete degli strumenti per sviluppatori del navigatore i codici di stato di ciascuna richiesta compaiono con colori diversi: usarla insieme a questo strumento rende la messa a punto più spedita.
Scenari d'uso dell'elenco dei codici di stato HTTP
Debug durante lo sviluppo di API
Verifica il significato di un codice di stato restituito dalla tua API o da un'API di terze parti per capire se il problema è lato client o lato server.
Verifica di 404 e 301 in un audit SEO
Nel controllare se i codici 404 (non trovato) e 301/302 (reindirizzamento) sono usati correttamente su un sito, questo riferimento aiuta a capire come li interpretano i motori di ricerca.
Analisi dei log del server web
Consulta il significato dei codici di stato registrati nei log di accesso o di errore, utile per indagare sugli incidenti e analizzare i pattern di traffico.
Verifica delle richieste negli strumenti per sviluppatori
Cerca in questo strumento un codice di stato mostrato nella scheda Rete del browser per capire rapidamente se la risposta si è comportata come previsto.
Glossario dei codici di stato HTTP
- Reindirizzamento (3xx)
- Una categoria di risposte che comunica al client che la risorsa richiesta si trova a un altro URL, invitandolo a recuperarla da lì.
- Errore del cliente (4xx)
- Una categoria di risposte che indica che la richiesta stessa, o le sue credenziali, presentavano un problema che ha impedito al server di elaborarla.
- Errore del servente (5xx)
- Una categoria di risposte che indica che la richiesta era valida, ma un guasto o una configurazione errata lato server ne ha impedito l'elaborazione.
- Idempotenza
- La proprietà per cui inviare più volte la stessa richiesta produce lo stesso risultato di inviarla una sola volta; GET, PUT e DELETE sono progettati per possedere questa proprietà.
- Cache
- Il meccanismo che consiste nel conservare una risposta già ottenuta per riutilizzarla in caso di richiesta identica, strettamente legato a risposte condizionali come 304 Not Modified.
- CORS (condivisione delle risorse tra origini diverse)
- Un meccanismo che controlla la comunicazione tra origini diverse; le violazioni possono manifestarsi come errori quali 403 Forbidden.
Domande frequenti
-i del comando curl, oppure inserendo il numero nella funzione di ricerca di questo strumento per conoscerne il significato.
A proposito — storia dei codici di stato HTTP
L'ordinamento dei codici di stato HTTP fu standardizzato per la prima volta nel 1996, nella specifica di HTTP/1.0, la norma RFC 1945. Con HTTP/1.1, cioè la RFC 2616 del 1999, si consolidò quasi del tutto l'attuale sistema, comprese le serie 4xx e 5xx, poi ripreso dalla RFC 7231 del 2014 e dalla RFC 9110 del 2022.
È celebre il codice scherzoso 418, «sono una teiera», che deriva da una specifica burlesca pubblicata per il primo aprile del 1998: un protocollo immaginario per il controllo delle caffettiere. Nella finzione, quel codice veniva restituito quando si chiedeva a una teiera di preparare il caffè.
L'idea di far esprimere alla prima cifra la grande categoria di significato avrebbe influenzato, si dice, i codici di risposta delle reti telefoniche e più tardi anche quelli di SMTP e FTP. La semplicità di quella classificazione — 1xx per le informazioni, 2xx per il successo — è rimasta pressoché intatta anche dopo quasi trent'anni.
Il 451, «non disponibile per motivi legali», è un codice relativamente recente, standardizzato nel febbraio 2016 dalla RFC 7725. Il numero fu scelto come omaggio a «Fahrenheit 451», il romanzo di fantascienza di Ray Bradbury dedicato al tema della censura.