Codici di stato HTTP
Tutti i codici di stato HTTP spiegati in modo semplice: cosa significano, cause comuni, come risolvere, una risposta di esempio e l’RFC che li definisce.
70 codici di stato
1xx Informativi
Risposte provvisorie: la richiesta è stata ricevuta e l’elaborazione continua.
100 Continue Continua Il server ha ricevuto gli header della richiesta e il client può proseguire inviando il corpo. È una risposta provvisoria inviata prima dello stato finale. 101 Switching Protocols Cambio di protocollo Il server accetta di passare al protocollo richiesto dal client nell'header Upgrade, quasi sempre WebSocket. Dopo questa risposta la connessione usa il nuovo protocollo. 102 Processing In elaborazione Risposta provvisoria WebDAV che indica che il server sta ancora lavorando a una richiesta lunga, quindi il client non deve andare in timeout. È deprecata e oggi si invia raramente. 103 Early Hints Suggerimenti anticipati Una risposta provvisoria che invia in anticipo header Link così il browser può precaricare CSS e font o preconnettersi ad altre origini mentre il server costruisce ancora la pagina finale.
2xx Successo
La richiesta è stata ricevuta, compresa e accettata.
200 OK OK La richiesta è riuscita. Per un GET il corpo contiene la risorsa; per un POST contiene il risultato dell'azione. 201 Created Creato La richiesta è riuscita e ha creato una nuova risorsa. L'header Location di solito punta a essa. 202 Accepted Accettato La richiesta è stata accettata per l'elaborazione, ma l'elaborazione non è terminata. L'esito è sconosciuto al momento della risposta. 203 Non-Authoritative Information Informazione non autorevole La richiesta è riuscita, ma un proxy di trasformazione ha modificato il contenuto della risposta 200 dell'origine. 204 No Content Nessun contenuto La richiesta è riuscita e non c'è un corpo da restituire. Gli header possono comunque portare metadati come un nuovo ETag. 205 Reset Content Reimposta contenuto La richiesta è riuscita e il client dovrebbe reimpostare la vista del documento, per esempio svuotare il modulo inviato. Non viene inviato alcun corpo. 206 Partial Content Contenuto parziale Il server restituisce solo una parte della risorsa, come richiesto da un header Range. Content-Range indica quali byte sono inclusi. 207 Multi-Status Multi-stato Una risposta WebDAV il cui corpo XML contiene uno stato separato per ciascuna delle risorse coinvolte da un'unica richiesta. 208 Already Reported Già segnalato Usato in un corpo WebDAV 207 per indicare che una risorsa è già stata elencata prima nella risposta, evitando duplicati quando i binding creano cicli. 226 IM Used IM usato Il server ha soddisfatto un GET applicando una o più manipolazioni d'istanza (codifica delta), quindi il corpo è una differenza e non la risorsa completa.
3xx Reindirizzamento
Il client deve fare un altro passo, di solito seguire un nuovo URL.
300 Multiple Choices Scelte multiple La risorsa ha più rappresentazioni (lingua, formato) e il client o l'utente deve sceglierne una. Il server può suggerire quella preferita tramite Location. 301 Moved Permanently Spostato permanentemente La risorsa è stata spostata in modo permanente all'URL in Location. Client e motori di ricerca devono usare il nuovo URL d'ora in poi. 302 Found Trovato La risorsa si trova temporaneamente a un altro URL. I client devono continuare a usare l'URL originale per le richieste future. 303 See Other Vedi altro Il server indica al client di recuperare un altro URL con GET, di solito per mostrare il risultato di un POST. 304 Not Modified Non modificato La copia in cache del client è ancora valida, quindi il server non invia il corpo. Risponde a una richiesta condizionale con If-None-Match o If-Modified-Since. 305 Use Proxy Usa proxy Deprecato. Un tempo chiedeva al client di ripetere la richiesta tramite il proxy indicato in Location. I browser lo ignorano per motivi di sicurezza. 307 Temporary Redirect Reindirizzamento temporaneo La risorsa si trova temporaneamente a un altro URL e il client deve ripetere lì la richiesta con lo stesso metodo e lo stesso corpo. 308 Permanent Redirect Reindirizzamento permanente La risorsa è stata spostata in modo permanente e i client devono ripetere la richiesta al nuovo URL con lo stesso metodo e lo stesso corpo.
4xx Errori del client
La richiesta ha un problema che il client deve correggere.
400 Bad Request Richiesta non valida Il server non può elaborare la richiesta perché è malformata: sintassi non valida, struttura errata o valori che non riesce a interpretare. 401 Unauthorized Non autorizzato La richiesta non contiene credenziali di autenticazione valide. Nonostante il nome, significa non autenticato: accedi o invia un token valido. 402 Payment Required Pagamento richiesto Riservato per uso futuro, ma in pratica i servizi lo restituiscono quando serve un pagamento o un piano a pagamento per continuare. 403 Forbidden Vietato Il server ha capito la richiesta ma rifiuta di autorizzarla. Accedere di nuovo non aiuta, a meno che i permessi non cambino. 404 Not Found Non trovato Il server non trova nulla all'URL richiesto. Non dice se la risorsa sia mai esistita o se tornerà. 405 Method Not Allowed Metodo non consentito L'URL esiste ma non supporta il metodo HTTP usato. L'header Allow elenca i metodi che funzionano. 406 Not Acceptable Non accettabile Il server non può produrre una risposta in nessun formato consentito dagli header Accept del client. 407 Proxy Authentication Required Autenticazione proxy richiesta Un proxy tra client e server richiede l'autenticazione prima di inoltrare la richiesta. 408 Request Timeout Timeout della richiesta Il server ha chiuso la connessione perché il client non ha inviato una richiesta completa in tempo. 409 Conflict Conflitto La richiesta è in conflitto con lo stato attuale della risorsa, per esempio un duplicato o una modifica concorrente. 410 Gone Non più disponibile La risorsa è sparita in modo permanente e non si conosce un nuovo indirizzo. A differenza del 404, il server lo dichiara di proposito. 411 Length Required Lunghezza richiesta Il server richiede un header Content-Length e la richiesta non lo includeva. 412 Precondition Failed Precondizione fallita Una precondizione negli header, come If-Match o If-Unmodified-Since, è risultata falsa, quindi il server non ha applicato la richiesta. 413 Content Too Large Contenuto troppo grande Il corpo della richiesta è più grande di quanto il server voglia o possa elaborare. In passato si chiamava Payload Too Large. 414 URI Too Long URI troppo lungo L'URL della richiesta è più lungo di quanto il server sia disposto a interpretare. 415 Unsupported Media Type Tipo di media non supportato Il server rifiuta la richiesta perché il tipo di media del corpo (Content-Type) o la sua codifica non è supportato. 416 Range Not Satisfiable Intervallo non soddisfacibile L'header Range chiede byte oltre la dimensione della risorsa. 417 Expectation Failed Aspettativa fallita Il server non può soddisfare il requisito dell'header Expect della richiesta, di solito Expect: 100-continue. 418 I'm a teapot Sono una teiera Uno scherzo del primo aprile dall'Hyper Text Coffee Pot Control Protocol: il server è una teiera e si rifiuta di fare il caffè. Alcuni siti lo usano per scherzo o per bloccare i bot. 421 Misdirected Request Richiesta indirizzata male La richiesta è arrivata a un server non configurato per rispondere per quell'host, spesso perché una connessione HTTP/2 è stata riutilizzata per un altro dominio. 422 Unprocessable Content Contenuto non elaborabile La richiesta è ben formata ma contiene errori semantici, quindi il server non può elaborarla. In passato Unprocessable Entity. 423 Locked Bloccato WebDAV: la risorsa è bloccata, quindi il metodo non può essere applicato. 424 Failed Dependency Dipendenza fallita WebDAV: l'azione è fallita perché dipendeva da un'altra azione della stessa richiesta che è fallita. 425 Too Early Troppo presto Il server si rifiuta di elaborare una richiesta inviata come early data TLS 1.3 (0-RTT) perché potrebbe essere riprodotta. 426 Upgrade Required Aggiornamento richiesto Il server rifiuta la richiesta con il protocollo attuale e chiede al client di aggiornarsi, per esempio a TLS o HTTP/2, come indicato nell'header Upgrade. 428 Precondition Required Precondizione richiesta Il server richiede che la richiesta sia condizionale (If-Match ecc.) per evitare aggiornamenti persi. 429 Too Many Requests Troppe richieste Il client ha inviato troppe richieste in un dato intervallo (rate limiting). Retry-After può indicare quanto attendere. 431 Request Header Fields Too Large Campi dell'header troppo grandi Gli header della richiesta sono troppo grandi, un singolo header o tutti insieme. 451 Unavailable For Legal Reasons Non disponibile per motivi legali Il server non può fornire la risorsa per motivi legali, come un'ordinanza del tribunale o la censura governativa. Il numero è un omaggio a Fahrenheit 451. 499 Client Closed Request (Non standard) Richiesta chiusa dal client nginx registra 499 quando il client chiude la connessione prima che il server invii una risposta. Il client non vede mai questo codice.
5xx Errori del server
Il server non è riuscito a soddisfare una richiesta valida.
500 Internal Server Error Errore interno del server Il server ha incontrato una condizione imprevista e non ha potuto completare la richiesta. È il codice generico per gli errori lato server. 501 Not Implemented Non implementato Il server non supporta la funzionalità richiesta, di solito il metodo della richiesta stesso. 502 Bad Gateway Gateway non valido Un gateway o un proxy ha ricevuto una risposta non valida dal server upstream a cui ha inoltrato la richiesta. 503 Service Unavailable Servizio non disponibile Il server non è temporaneamente in grado di gestire la richiesta, per sovraccarico o manutenzione. Retry-After può dire quando riprovare. 504 Gateway Timeout Timeout del gateway Un gateway o un proxy non ha ricevuto in tempo una risposta dal server upstream. 505 HTTP Version Not Supported Versione HTTP non supportata Il server non supporta la versione di HTTP usata nella richiesta. 506 Variant Also Negotiates Anche la variante negozia La negoziazione trasparente dei contenuti è configurata male: la variante scelta è a sua volta impostata per negoziare, creando un ciclo. 507 Insufficient Storage Spazio di archiviazione insufficiente Il server non può memorizzare la rappresentazione necessaria per completare la richiesta (spazio su disco o quota esauriti). Deriva da WebDAV. 508 Loop Detected Ciclo rilevato Il server ha rilevato un ciclo infinito durante l'elaborazione di una richiesta con Depth: infinity (WebDAV). Alcuni hosting lo usano anche per i limiti di risorse. 510 Not Extended Non esteso Servono ulteriori estensioni perché il server soddisfi la richiesta (HTTP Extension Framework). Il framework oggi è storico. 511 Network Authentication Required Autenticazione di rete richiesta Il client deve autenticarsi per accedere alla rete, di solito su un captive portal (Wi-Fi di hotel o aeroporto). 520 Web Server Returned an Unknown Error (Non standard) Errore sconosciuto Specifico di Cloudflare: il server di origine ha restituito una risposta vuota, sconosciuta o inattesa. 521 Web Server Is Down (Non standard) Server web non attivo Specifico di Cloudflare: il server di origine ha rifiutato la connessione. 522 Connection Timed Out (Non standard) Timeout della connessione Specifico di Cloudflare: la connessione TCP verso l'origine è andata in timeout. 523 Origin Is Unreachable (Non standard) Origine irraggiungibile Specifico di Cloudflare: Cloudflare non riesce a raggiungere l'origine, di solito per problemi di DNS o di instradamento. 524 A Timeout Occurred (Non standard) Si è verificato un timeout Specifico di Cloudflare: la connessione all'origine è stata stabilita, ma l'origine non ha inviato una risposta HTTP in tempo (100 secondi di default). 525 SSL Handshake Failed (Non standard) Handshake SSL non riuscito Specifico di Cloudflare: l'handshake TLS tra Cloudflare e l'origine non è riuscito. 526 Invalid SSL Certificate (Non standard) Certificato SSL non valido Specifico di Cloudflare: in modalità SSL Full (strict), il certificato dell'origine non è valido, è scaduto, è autofirmato o non corrisponde al nome host.