Vai al contenuto

Prontuario dei codici di stato HTTP

HTTP Status Reference

Spiega ogni codice di stato con il significato che gli dà la specifica, la sua memorizzabilità in cache e gli errori che si fanno usandolo.

Un riferimento consultabile per ogni codice di stato HTTP: che cosa significa, quale RFC lo definisce, se una cache può conservarlo per impostazione predefinita e con quale intestazione va mandato. La ricerca trova il codice, il nome e il riepilogo e accetta una query in inglese, coreano, giapponese, cinese semplificato e spagnolo — ma non in italiano.

🔒 Funziona interamente nel tuo browserhttpstatusreference

Cerca nel codice, nel nome, nel riassunto e nelle note — in inglese, coreano, giapponese, cinese semplificato e spagnolo.

Classe

404 Not Found

404Not Found

A questa URL non c’è nessuna risorsa.

Errore del client — La colpa è della richiesta. Riprovarla senza cambiarla fallirà allo stesso modo.

Definito in
RFC 9110 §15.5.5
In cache per impostazione predefinita
sì

Memorizzabile in cache per impostazione predefinita: un fatto che sorprende tutti la prima volta che una CDN continua a servire un 404 per una pagina che ormai esiste.

62 su 62 codici

Tutti i codici di stato HTTP, con il loro significato.
CodiceNomeSignificaIn cache
100ContinueIl client può proseguire e inviare il corpo della richiesta.no
101Switching ProtocolsIl server sta passando al protocollo chiesto dal client.no
102ProcessingWebDAV: la richiesta è in lavorazione.no
103Early HintsIntestazioni preliminari, così il client può iniziare a precaricare prima della risposta vera.no
200OKLa richiesta è andata a buon fine.sì
201CreatedÈ stata creata una nuova risorsa.no
202AcceptedLa richiesta è stata accettata ma non ancora eseguita.no
203Non-Authoritative InformationUn proxy ha modificato la risposta che sta inoltrando.sì
204No ContentSuccesso, e non c’è corpo di proposito.sì
205Reset ContentSuccesso; il client dovrebbe svuotare il modulo che ha inviato.no
206Partial ContentL’intervallo di byte richiesto.sì
207Multi-StatusWebDAV: un corpo XML con uno stato per ogni sotto-richiesta.no
208Already ReportedWebDAV: questo membro era già stato enumerato.no
226IM UsedLa risposta è il risultato di manipolazioni di istanza applicate.no
300Multiple ChoicesEsistono più rappresentazioni; scegline una.sì
301Moved PermanentlyLa risorsa ha una nuova URL, per sempre.sì
302FoundUn reindirizzamento temporaneo.no
303See OtherVai a prendere l’altra URL con GET.no
304Not ModifiedLa copia in cache va ancora bene.no
305Use ProxyDeprecato: il client dovrebbe usare il proxy indicato.no
307Temporary RedirectUn reindirizzamento temporaneo che mantiene il metodo.no
308Permanent RedirectUn reindirizzamento permanente che mantiene il metodo.sì
400Bad RequestLa richiesta è malformata e il server non la elabora.no
401UnauthorizedServe autenticarsi, oppure le credenziali fornite sono state rifiutate.no
402Payment RequiredRiservato, e non gli è mai stato dato un significato.no
403ForbiddenIl server ha capito, e rifiuta.no
404Not FoundA questa URL non c’è nessuna risorsa.sì
405Method Not AllowedLa URL esiste; questo metodo non le si applica.sì
406Not AcceptableNiente di ciò che il server può produrre corrisponde all’intestazione `Accept`.no
407Proxy Authentication RequiredIl proxy vuole le credenziali.no
408Request TimeoutIl client ci ha messo troppo a inviare la richiesta.no
409ConflictLa richiesta è in conflitto con lo stato attuale.no
410GoneEra qui e, di proposito, non tornerà.sì
411Length RequiredServe un’intestazione `Content-Length`.no
412Precondition FailedUna condizione `If-Match` o `If-Unmodified-Since` non è stata soddisfatta.no
413Content Too LargeIl corpo è più grande di quanto il server accetti.no
414URI Too LongLa URL è più lunga di quanto il server accetti.sì
415Unsupported Media TypeIl `Content-Type` del corpo non è tra quelli che il server gestisce.no
416Range Not SatisfiableL’intervallo richiesto sta fuori dalla risorsa.no
417Expectation FailedL’intestazione `Expect` non può essere soddisfatta.no
418I'm a teapotUno scherzo del primo aprile del 1998 che non se n’è più andato.no
421Misdirected RequestQuesto server non può produrre una risposta per questa autorità.no
422Unprocessable ContentBen formato, ma semanticamente sbagliato.no
423LockedWebDAV: la risorsa è bloccata.no
424Failed DependencyWebDAV: una richiesta precedente della sequenza è fallita.no
425Too EarlyIl server non vuole rischiare di rieseguire una richiesta inviata come dati anticipati.no
426Upgrade RequiredIl client deve cambiare protocollo.no
428Precondition RequiredIl server pretende che la richiesta sia condizionale.no
429Too Many RequestsLimite di richieste raggiunto.no
431Request Header Fields Too LargeLe intestazioni sono troppo grandi.no
451Unavailable For Legal ReasonsBloccato per una richiesta legale.sì
500Internal Server ErrorQualcosa è andato storto e il server non ha niente di più preciso da dire.no
501Not ImplementedIl server non supporta affatto quel metodo.sì
502Bad GatewayUn server a monte ha mandato qualcosa di non valido.no
503Service UnavailableTemporaneamente incapace di gestire la richiesta.no
504Gateway TimeoutUn server a monte non ha risposto in tempo.no
505HTTP Version Not SupportedLa versione di HTTP indicata nella richiesta non è supportata.no
506Variant Also NegotiatesUna configurazione sbagliata della negoziazione del contenuto.no
507Insufficient StorageWebDAV: non c’è spazio sufficiente per salvare la rappresentazione.no
508Loop DetectedWebDAV: un ciclo infinito durante l’elaborazione.no
510Not ExtendedServono ulteriori estensioni.no
511Network Authentication RequiredUn captive portal vuole che tu acceda.no

Quelli che si confondono

401 vuol dire «non so chi sei»: manda le credenziali e riprova. 403 vuol dire «so chi sei e la risposta è no». Se le credenziali erano valide ma insufficienti, è 403.
Il 400 riguarda una richiesta che il server non riesce a leggere. Il 422 riguarda una che ha letto benissimo e con cui non è d’accordo. Un 422 si può riprovare con dati diversi; un 400 di solito vuol dire che è il client stesso a essere rotto.
Il primo asse è la permanenza (301/308 permanenti, 302/307 temporanei) e il secondo è la conservazione del metodo (307/308 lo mantengono, 301/302 storicamente no). Nel dubbio, su una API usa 307 o 308.
Vengono entrambi da un proxy, non dalla tua applicazione. Il 502 è «quello a monte ha risposto una sciocchezza o è morto»; il 504 è «quello a monte non ha mai risposto». Il secondo è un timeout che puoi regolare; il primo è un guasto che devi riparare.
Entrambi vogliono dire che lì non c’è niente. Il 410 vuol dire in più che non tornerà mai, e i motori di ricerca ne tengono conto in pochi giorni anziché in mesi.
Il 405 è «non su questa URL, ma ecco quello che va» — e deve mandare un’intestazione `Allow`. Il 501 è «questo server non implementa quel metodo da nessuna parte».
Qui «in cache» vuol dire memorizzabile in cache in modo euristico: la RFC 9110 §15.1 elenca i codici che una cache può conservare quando niente dice il contrario. Il 404 è in quell’elenco, ed è così che una CDN finisce per servire un «non trovato» per una pagina che ormai hai pubblicato.

Come si usa

  1. Cercare, oppure filtrare per classe

    Basta digitare un numero, un nome o il problema che si ha: «gateway», «rate limit», «unauthorized». L’indice di ricerca non contiene l’italiano, quindi «autenticazione» non trova niente mentre «authentication» sì. Oppure si restringe a 4xx e si legge in giù.

  2. Aprirne uno per il dettaglio

    Il pannello di dettaglio dà la specifica che lo definisce, se è conservabile in cache in modo euristico e ogni intestazione che la risposta è obbligata a portare — un 405 senza `Allow` e un 301 senza `Location` sono entrambi incompleti.

  3. Leggere le coppie che si confondono

    La sezione in fondo copre quelli che vengono scelti male: 401 contro 403, 302 contro 307, 502 contro 504.

Domande frequenti

Qual è la differenza fra 401 e 403?

401 vuol dire che la richiesta non aveva credenziali valide e deve includere un’intestazione `WWW-Authenticate` che dice come fornirle. 403 vuol dire che le credenziali sono state capite e non bastano. Mandare 401 a un utente autenticato che non ha il permesso è l’errore più comune.

Perché la mia CDN conserva in cache un 404?

Perché può. La RFC 9110 §15.1 elenca i codici di stato che una cache può conservare in modo euristico quando nient’altro dice diversamente, e il 404 è nell’elenco. Una pagina pubblicata nel frattempo resta «non trovata» finché la cache non scade o non la si svuota — su un 404 che ci si aspetta diventi 200 va mandato `Cache-Control: no-store`.

302 o 307?

307, se si vuole conservare il metodo. Storicamente i client trasformavano un POST in un GET su un 302 — la specifica non lo diceva, ma lo facevano tutti — perciò 307 e 308 esistono per dire senza ambiguità «stesso metodo, URL nuovo».

Si può inventare un proprio codice di stato?

Si può mandare qualunque cosa, e i client trattano un codice sconosciuto come il membro generico della sua classe: un 499 viene gestito come un 400. Ma cache, proxy e librerie decidono in base alla classe, quindi un codice non registrato non porta niente che un’intestazione non possa portare meglio.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.