Codici di stato HTTP
Il riferimento completo dei codici di stato di risposta HTTP: cosa significa ogni codice, quando i server lo inviano e come reagire — per il debug delle richieste, la documentazione delle API e l'analisi dei log del server.
Usa i link di scorrimento rapido per spostarti tra le classi di risposta, oppure apri le guide dettagliate per i codici più comuni.
Tabella dei codici di risposta HTTP
| Code | Nome | Significato |
|---|---|---|
| 1xx Informativi | ||
| 100 | Continue | Il server ha ricevuto gli header della richiesta e il client dovrebbe inviare il corpo della richiesta. |
| 101 | Switching Protocols | Il server accetta di passare al protocollo richiesto nell'header Upgrade. |
| 102 | Processing | Il server ha accettato la richiesta completa ma non l'ha ancora completata (WebDAV). |
| 103 | Early Hints | Header preliminari, principalmente suggerimenti di preload Link, inviati prima della risposta finale. |
| 2xx Successo | ||
| 200 | OK | La richiesta è andata a buon fine e la risposta contiene la rappresentazione richiesta. |
| 201 | Created | La richiesta è andata a buon fine ed è stata creata una nuova risorsa, di solito indicata in Location. |
| 202 | Accepted | La richiesta è stata accettata per un'elaborazione asincrona non ancora terminata. |
| 203 | Non-Authoritative Information | La risposta è stata modificata da un proxy di trasformazione lungo il percorso. |
| 204 | No Content | La richiesta è andata a buon fine e non c'è intenzionalmente alcun corpo di risposta. |
| 205 | Reimposta Content | La richiesta è andata a buon fine e il client dovrebbe reimpostare la visualizzazione del documento o del modulo. |
| 206 | Partial Content | La risposta fornisce solo l'intervallo di byte richiesto con l'header Range. |
| 3xx Reindirizzamento | ||
| 300 | Multiple Choices | Esistono più rappresentazioni e il client dovrebbe sceglierne una. |
| 301 | Moved Permanently | La risorsa ha un nuovo URL permanente e i link dovrebbero essere aggiornati. |
| 302 | Found | La risorsa si trova temporaneamente a un URL diverso; continua a usare quello originale. |
| 303 | See Other | Il risultato è disponibile a un altro URL e dovrebbe essere recuperato con GET. |
| 304 | Not Modified | La copia in cache è ancora valida, quindi il corpo non viene inviato di nuovo. |
| 307 | Temporary Redirect | Reindirizzamento temporaneo che deve mantenere il metodo HTTP e il corpo originali. |
| 308 | Permanent Redirect | Reindirizzamento permanente che deve mantenere il metodo HTTP e il corpo originali. |
| 4xx Errori del client | ||
| 400 | Bad Request | Il server non può elaborare la richiesta perché è malformata. |
| 401 | Unauthorized | Sono richieste credenziali di autenticazione valide, ma mancano o sono errate. |
| 402 | Payment Required | Stato riservato, usato in pratica da alcune API per i limiti di fatturazione. |
| 403 | Forbidden | Il server ha compreso la richiesta ma rifiuta di autorizzarla. |
| 404 | Not Found | Non esiste alcuna risorsa all'URL richiesto. |
| 405 | Method Not Allowed | L'URL esiste ma non supporta questo metodo HTTP. |
| 406 | Not Acceptable | Nessuna rappresentazione corrisponde agli header di negoziazione Accept. |
| 407 | Proxy Authentication Required | Il client deve prima autenticarsi con il proxy. |
| 408 | Request Timeout | Il server ha chiuso la connessione perché la richiesta ha impiegato troppo tempo ad arrivare. |
| 409 | Conflict | La richiesta è in conflitto con lo stato attuale della risorsa, ad esempio una collisione di modifiche. |
| 410 | Gone | La risorsa è stata rimossa deliberatamente e non tornerà. |
| 411 | Length Required | La richiesta deve includere un header Content-Length. |
| 412 | Precondition Failed | Un header condizionale come If-Match è risultato falso. |
| 413 | Content Too Large | Il corpo della richiesta supera la dimensione accettata dal server. |
| 414 | URI Too Long | L'URL della richiesta è più lungo di quanto il server possa analizzare. |
| 415 | Unsupported Media Type | Il formato del corpo della richiesta non è supportato per questa risorsa. |
| 416 | Range Not Satisfiable | L'intervallo di byte richiesto è al di fuori della dimensione della risorsa. |
| 417 | Expectation Failed | L'header di richiesta Expect non ha potuto essere soddisfatto. |
| 418 | I'm a teapot | Uno stato da pesce d'aprile della RFC 2324; alcune API lo usano come easter egg. |
| 421 | Misdirected Request | La richiesta ha raggiunto un server che non può produrre una risposta per questa autorità. |
| 422 | Unprocessable Content | La richiesta è ben formata ma semanticamente non valida, comune nella validazione REST. |
| 425 | Too Early | Il server rifiuta di elaborare una richiesta che potrebbe essere ripetuta (dati TLS early data). |
| 426 | Upgrade Required | Il client deve passare a un protocollo diverso come indicato in Upgrade. |
| 428 | Precondition Required | Il server richiede una richiesta condizionale per evitare aggiornamenti persi. |
| 429 | Too Many Requests | Il client ha superato un limite di richieste; Retry-After suggerisce quando riprovare. |
| 431 | Request Header Fields Too Large | Gli header, spesso i cookie, superano i limiti di dimensione del server. |
| 451 | Unavailable For Legal Reasons | L'accesso è bloccato per motivi legali, come ordinanze del tribunale. |
| 5xx Errori del server | ||
| 500 | Internal Server Error | Il server ha riscontrato un errore imprevisto durante la gestione della richiesta. |
| 501 | Not Implemented | Il server non riconosce o non supporta il metodo di richiesta. |
| 502 | Bad Gateway | Un gateway o un proxy ha ricevuto una risposta non valida dal server upstream. |
| 503 | Service Unavailable | Il server è temporaneamente incapace di rispondere, per sovraccarico o manutenzione. |
| 504 | Gateway Timeout | Un gateway o un proxy ha smesso di aspettare il server upstream. |
| 505 | HTTP Version Not Supported | Il server non supporta la versione del protocollo HTTP utilizzata. |
| 506 | Variant Also Negotiates | Una configurazione errata della negoziazione dei contenuti sul server. |
| 507 | Insufficient Storage | Il server non può archiviare ciò che serve per completare la richiesta (WebDAV). |
| 508 | Loop Detected | Il server ha rilevato un ciclo infinito durante l'elaborazione (WebDAV). |
| 510 | Not Extended | La richiesta necessita di ulteriori estensioni che non sono state fornite. |
| 511 | Network Authentication Required | La rete (ad esempio un captive portal) richiede prima l'autenticazione. |
1xx Informativi
Le risposte informative confermano che la richiesta è stata ricevuta e che il client può continuare. Sono provvisorie: segue sempre uno stato finale. Quella che incontrerai davvero è 103 Early Hints, che permette ai server di inviare suggerimenti di preload prima che la risposta completa sia pronta.
2xx Successo
Le risposte di successo indicano che la richiesta è stata compresa e accettata. 200 OK restituisce il risultato nel corpo, 201 Created annuncia una nuova risorsa e 204 No Content conferma il successo senza nulla da restituire, deliberatamente.
3xx Reindirizzamento
Le risposte di reindirizzamento indicano al client di andare altrove. La distinzione chiave è la permanenza — 301/308 sono permanenti, 302/307 temporanei — e se il metodo HTTP deve essere preservato (307/308) o può cambiare in GET (301/302). 304 Not Modified è il caso speciale che rende possibile la cache del browser.
4xx Errori del client
Gli errori del client indicano che la richiesta stessa è stata rifiutata. I più comuni: 400 richiesta malformata, 401 autenticazione richiesta, 403 accesso negato, 404 nulla a questo URL e 429 limite di richieste superato.
5xx Errori del server
Gli errori del server indicano che il server ha fallito su una richiesta che poteva essere perfettamente valida. 500 è un crash dell'applicazione, 502 e 504 sono proxy che segnalano un upstream rotto o silenzioso, e 503 è un'indisponibilità temporanea e deliberata.
Come leggere un codice di stato
La prima cifra indica la classe: 1xx informativo, 2xx successo, 3xx reindirizzamento, 4xx errore del client, 5xx errore del server. Un client che incontra un codice sconosciuto può tornare in sicurezza a trattarlo come il codice x00 della sua classe — è così che i nuovi codici restano compatibili con le versioni precedenti. Durante il debug, controlla sempre gli header di risposta accanto al codice: Location spiega i reindirizzamenti, Allow spiega il 405, Retry-After spiega il 429 e il 503.
Esempi
200 OK — page served normally 301 Moved Permanently — URL changed for good, follow Location 304 Not Modified — your cached copy is still valid 404 Not Found — nothing exists at this URL 429 Too Many Requests — rate limit hit, wait Retry-After seconds 503 Service Unavailable — temporary downtime or maintenance
FAQ
Cos'è HTTP 404?
HTTP 404 significa che la risorsa richiesta non è stata trovata all'URL specificato. Consulta la guida dettagliata al 404 per cause, soluzioni e impatto SEO.
Qual è la differenza tra 301 e 302?
Un reindirizzamento 301 è permanente — i link e i motori di ricerca dovrebbero aggiornarsi al nuovo URL. Un 302 segnala uno spostamento temporaneo in cui l'URL originale resta quello canonico.
Cosa significa 503?
HTTP 503 significa che il servizio è temporaneamente non disponibile, di solito per manutenzione o sovraccarico, e il client dovrebbe riprovare dopo un ritardo.
Qual è la differenza tra 401 e 403?
401 significa che il server ha bisogno di credenziali di autenticazione valide. 403 significa che sa chi sei e rifiuta comunque l'accesso — effettuare di nuovo il login non aiuterà.
Qual è la differenza tra 502 e 504?
Entrambi provengono da un proxy che comunica con un server upstream: 502 significa che l'upstream ha restituito una risposta non valida, 504 significa che non ha risposto entro il timeout.
Quali codici di stato contano di più per la SEO?
200 contraddistingue le pagine indicizzabili, 301/308 trasferiscono il posizionamento in caso di spostamenti permanenti, 404/410 rimuovono gli URL morti e 503 protegge il posizionamento durante i fermi quando servito con Retry-After.