Ogni sviluppatore tiene una lista mentale di codici di stato HTTP Il mio era 200, 404 e 500, e per molto tempo è stato sufficiente per falsificare la competenza Poi ho passato una settimana a costruire un'integrazione di pagamento in cui l'API restituiva 402 per una carta rifiutata, 409 quando ritentavo una carica che era già passata, e 429 quando i miei test la martellavano troppo velocemente Improvvisamente la differenza tra i codici era la differenza tra una funzione funzionante e un ticket di supporto Costruisco molti strumenti web per Toolz.dev, e un riferimento al codice di stato ricercabile è una di quelle cose che raggiungo costantemente, quindi ne ho integrato uno nel sito e ho scritto questa guida per seguirlo.
tl; dr: Un codice di stato HTTP è un numero di tre cifre che un server invia indietro per descrivere il risultato di una richiesta La prima cifra imposta la classe: 1xx informativo, 2xx successo, 3xx reindirizzamento, 4xx errore del client, 5xx errore del server Guarda uno qualsiasi di loro su istantaneamente con il Strumento Codici di stato HTTP, che consente di cercare per numero, nome o parola chiave e cita la RFC che definisce ciascuno di essi.
Questa guida illustra cosa sono i codici di stato, cosa significa ogni classe, i codici specifici che vale la pena memorizzare e quelli che le persone più spesso sbagliano. È rivolto agli sviluppatori front-end che eseguono il debug delle chiamate API, agli sviluppatori back-end che decidono cosa restituire e a chiunque esegua SEO tecnico che ha bisogno di reindirizzamenti per comportarsi bene.
Che cosa è un codice di stato HTTP?
Ogni volta che il tuo browser o un'app richiede qualcosa sul web, il server risponde con una risposta La prima riga di quella risposta contiene un codice di stato: un numero di tre cifre, abbinato a una breve frase di ragione come & quot; OK" o & quot; Non trovato" Il codice è il riassunto leggibile dalla macchina di ciò che è accaduto e la frase del motivo è l'etichetta a misura d'uomo I clienti agiscono sul numero; la frase è per le persone che leggono i registri.
I codici di stato sono definiti dalla Internet Engineering Task Force, principalmente nella RFC 9110, che ha consolidato le vecchie specifiche HTTP nel 2022. un registro centrale gestito da IANA elenca ogni codice ufficialmente riconosciuto. Quella standardizzazione è ciò che consente a un browser scritto da un'azienda di parlare con un server scritto da un altro e concordare cosa significa un 404. il Strumento Codici di stato HTTP rispecchia quel registro, elencando ogni codice standard con il suo significato e la RFC che lo definisce.
Il modello mentale chiave è che la prima cifra ti dice la categoria, e la categoria ti dice chi è responsabile Un codice 4xx significa che il client ha inviato qualcosa di sbagliato Un codice 5xx significa che il server non è riuscito su una richiesta che andava bene Quella singola distinzione risolve la maggior parte degli argomenti di debug su di chi è il bug.
Cosa significano le cinque classi di codice di stato?
Ci sono esattamente cinque classi, raggruppate per la cifra iniziale Capire la classe è più prezioso che memorizzare i singoli codici, perché ti dice dove guardare.
La classe 1xx è informativa Questi codici segnalano che il server ha ricevuto la richiesta e l'elaborazione continua Sono rari nel lavoro quotidiano Il più noto è 100 Continua, e quello moderno più utile è 103 Early Hints, che consente a un server di dire al browser di iniziare a precaricare le risorse prima che la risposta completa sia pronta.
La classe 2xx significa successo La richiesta è stata ricevuta, compresa e accettata.200 OK è il codice di successo quotidiano, 201 Creato conferma che è stata creata una nuova risorsa e 204 Nessun contenuto dice & quot; fatto, niente da inviare indietro", che è comune per le operazioni di eliminazione.
La classe 3xx è reindirizzamento La risorsa vive da qualche altra parte, o non è cambiata dall'ultima volta che il client l'ha vista Questa classe è dove vive SEO, perché 301 e 302 dicono ai motori di ricerca se una mossa è permanente 304 Not Modified è un cavallo di battaglia di memorizzazione nella cache che consente di risparmiare un'enorme larghezza di banda.
La classe 4xx è un errore del client La richiesta era malformata, non autorizzata o puntata su qualcosa che non esiste 400, 401, 403, 404 e 429 vivono tutti qui Quando vedi un 4xx, controlla quale è il tuo codice inviato prima di incolpare il server.
La classe 5xx è un errore del server La richiesta era valida ma il server non poteva soddisfarla. 500, 502, 503 e 504 sono quelli che incontrerai in incidenti di produzione, di solito puntando a un arresto anomalo, a un servizio sovraccarico o a una dipendenza upstream interrotta.
Quali codici di stato HTTP dovrebbe conoscere ogni sviluppatore?
Non hai bisogno di tutti i codici sessanta e più nella tua testa Ne servono forse quindici, e il resto cerchi Ecco il set di lavoro Penso che si guadagni un posto permanente nella memoria, con le situazioni che li innescano.
| Codice | significato | Quando lo vedi |
|---|---|---|
| 200 | OK | Una normale richiesta riuscita |
| 201 | Creato | Un POST o PUT ha creato una nuova risorsa |
| 204 | Nessun Contenuto | Successo con un corpo vuoto, comune dopo DELETE |
| 301 | Spostato permanentemente | Un URL spostato per sempre; trasferimenti di ranking SEO |
| 302 | Trovato | Un reindirizzamento temporaneo; continua a utilizzare il vecchio URL |
| 304 | Non Modificato | La copia memorizzata nella cache è ancora valida; nessun corpo inviato |
| 400 | Cattiva Richiesta | Sintassi non valida o frame di richiesta non valido |
| 401 | Non autorizzato | Autenticazione mancante o non riuscita |
| 403 | Proibito | Autenticato ma non consentito |
| 404 | Non Trovato | La risorsa non esiste |
| 409 | Conflitto | La richiesta si scontra con lo stato attuale |
| 422 | Contenuto Inelaborabile | Sintassi valida, regole di convalida non riuscite |
| 429 | Troppe Richieste | Tariffa limitata; fare marcia indietro e riprovare |
| 500 | Errore interno del server | Inaspettato guasto del server |
| 503 | Servizio Non Disponibile | Server sovraccarico o in manutenzione |
Vale la pena riconoscere il resto del registro, da 226 IM Usato a 451 Non disponibile per motivi legali, ma non memorizzarlo Questo è esattamente lo scopo di uno strumento di ricerca.
Qual è la differenza tra 401 e 403?
Questa coppia fa inciampare quasi tutti, quindi merita una sezione propria. Entrambi significano che l'accesso è stato negato, ma per ragioni diverse, e la differenza cambia il modo in cui la tua app dovrebbe rispondere.
Un 401 Unauthorized significa che la richiesta manca di autenticazione valida Il server non sa chi sei O non hai inviato credenziali, o quelle che hai inviato erano sbagliate o scadute La risposta corretta dal tuo lato è di accedere o aggiornare il token Per specifiche, una risposta 401 dovrebbe includere un'intestazione WWW-Authenticate che dice al client come autenticarsi.
Un 403 Proibito significa che il server sa esattamente chi sei e rifiuta comunque Sei autenticato ma non autorizzato per questa particolare risorsa Il nuovo accesso non aiuterà, perché il problema sono i permessi, non l'identità Un utente normale che colpisce un endpoint solo admin dovrebbe ottenere un 403.
La regola rapida che uso: 401 è & quot; chi sei?", 403 è & quot; So chi sei, e no" Se stai costruendo un'API e vuoi generare le intestazioni di Autorizzazione per testare questi flussi, il Generatore di autenticazione di base produce le credenziali codificate di cui hai bisogno.
Perché i reindirizzamenti 301 contro 302 contano per la SEO?
I reindirizzamenti sono i punti in cui i codici di stato smettono di essere un dettaglio interno dell'implementazione e iniziano a influenzare il tuo posizionamento nella ricerca Quando sposti una pagina, il codice di stato che restituisci dice ai motori di ricerca cosa fare con il vecchio URL's autorità accumulata.
Un 301 Moved Permanently segnala che la mossa è definitiva I motori di ricerca eliminano nel tempo il vecchio URL dal loro indice, passano i segnali di posizionamento al nuovo URL e aggiornano i loro collegamenti Questo è il codice che desideri quando rinomini una pagina, migri su HTTPS o consolidi URL duplicati Usarlo correttamente è una delle correzioni più comuni in un audit SEO tecnico.
Un 302 Found segnala una mossa temporanea I motori di ricerca mantengono indicizzato l'URL originale perché hai detto loro che la modifica non è permanente Se usi un 302 per una mossa che è permanente, puoi bloccare il tuo posizionamento su un URL che non usi più Ho visto siti perdere visibilità per mesi perché un framework predefinito a 302 redirect durante una migrazione HTTPS.
Ci sono anche 307 Temporary Redirect e 308 Permanent Redirect, che si comportano come 302 e 301 ma garantiscono che il metodo e il corpo HTTP siano preservati Usa 307 e 308 per le richieste non-GET in cui cambiare il metodo interromperebbe le cose Se stai verificando come i crawler vedono il tuo sito, abbina questa conoscenza con il Generatore robots.txt E il Generatore di meta tag per assicurarsi che l'intera immagine di scansione e reindirizzamento sia coerente. IL Toolkit per sviluppatori web guida lega questi pezzi insieme.
Quali sono i codici di errore del server più comuni e come li esegui il debug?
La classe 5xx è il luogo in cui vivono gli incidenti di produzione e ogni codice ti punta a un livello diverso dello stack Sapendo quale è ciò che consente di risparmiare tempo reale durante un'interruzione.
Un errore interno del server 500 è il generico catch-all Significa che il codice della tua applicazione ha lanciato un'eccezione non gestita o ha colpito una condizione che non poteva elaborare La correzione è quasi sempre nei tuoi registri Un 500 è il server che dice & quot; qualcosa si è rotto e non ho una parola migliore per it", quindi il codice ti dice dove cercare ma non cosa è andato storto.
Un 502 Bad Gateway e un 504 Gateway Timeout provengono entrambi da un server che funge da gateway o proxy, come un load balancer o un proxy inverso davanti alla tua app Un 502 significa che l'upstream ha inviato qualcosa di non valido, spesso perché la tua applicazione si è bloccata o non è in esecuzione Un 504 significa che l'upstream ha impiegato troppo tempo per rispondere e il gateway ha rinunciato ad aspettare Se corri dietro Nginx, un CDN o un cloud load balancer, questi sono i codici che vedrai quando la cosa dietro il proxy non è sana.
Un servizio 503 non disponibile significa che il server è temporaneamente incapace di gestire la richiesta, di solito perché è sovraccarico o in manutenzione Le risposte ben educate 503 includono un'intestazione Retry-After che dice ai client quando tornare L'invio di un 503 durante la manutenzione pianificata è il modo corretto e sicuro per SEO per abbassare un sito brevemente, perché dice ai motori di ricerca di tornare più tardi piuttosto che supporre che le pagine siano andate Per uno sguardo più ampio alla diagnosi dei problemi web, il Strumenti di produttività per sviluppatori la guida copre il toolkit più ampio.
E i codici di stato meno comuni?
Al di là del set di lavoro, il registro contiene una lunga coda di codici che incontrerai occasionalmente e riconoscerli consente di risparmiare una mezz'ora confusa. Alcuni meritano un tour veloce.
Nella famiglia 2xx, 206 Partial Content alimenta download e streaming video riassumibili Quando un client invia un'intestazione Range chiedendo i byte da 500 a 999 di un file, il server risponde a 206 proprio con quella fetta. Questo è il modo in cui riprende un download in pausa invece di ricominciare da capo e come un browser cerca al centro di un video senza prima recuperare il tutto.
Nella famiglia 4xx, 410 Gone è una versione più forte e deliberata di 404. dove 404 dice & quot; Non sono riuscito a trovarlo& quot;, 410 dice & quot; era qui, è definitivamente andato, smettere di chiedere& quot; L'uso di 410 per i contenuti che hai rimosso intenzionalmente aiuta i motori di ricerca a rilasciarlo più velocemente di quanto farebbe un 404 Un altro utile è 451 Unavailable For Legal Reasons, il cui numero è un cenno al romanzo Fahrenheit 451, restituito quando il contenuto è bloccato da un ordine legale come un takedown o un'ingiunzione del tribunale.
C'è anche 418 I & #39; m una Teiera, un vero codice registrato da un pesce d'aprile 1998 specifica che una teiera ritorna quando viene chiesto di preparare il caffè Non viene utilizzato per il traffico normale, ma si presenta come un uovo di Pasqua in alcune API, ed è un piccolo promemoria che le persone che hanno scritto questi standard avevano un senso dell'umorismo Lo strumento elenca tutti questi in modo da poter cercare tutto ciò in cui si inciampa senza indovinare.
In che modo lo strumento Codici di stato HTTP aiuta?
Lo strumento è volutamente semplice, perché il lavoro è semplice: hai un codice o un sintomo, e vuoi il significato velocemente Puoi cercare in base al numero, alla frase del motivo come & quot;not found", o tramite una parola chiave dalla descrizione come & quot;redirect" o & quot;rate limit" Puoi filtrare su una singola classe per sfogliare solo i reindirizzamenti o solo gli errori del server Ogni voce mostra la frase del motivo, una semplice spiegazione di quando si applica il codice e la RFC che lo definisce, in modo da poter confermare il comportamento rispetto alla fonte primaria.
Poiché l'intero registro viene caricato nel browser, la ricerca è istantanea e funziona offline una volta aperta la pagina. Niente di ciò che cerchi viene inviato da nessuna parte. È il tipo di riferimento che mantengo bloccato in una scheda durante la creazione di un'API, proprio accanto al Parser dell'agente utente per l'ispezione delle intestazioni delle richieste.
Domande frequenti
Quali sono le cinque classi di codici di stato HTTP?
I codici di stato HTTP sono raggruppati in base alla loro prima cifra: 1xx informativo, 2xx successo, reindirizzamento 3xx, errore client 4xx ed errore server 5xx. La classe ti dice a colpo d'occhio se una richiesta è riuscita, è stata reindirizzata o non è riuscita sul lato client o server, che di solito è sufficiente per sapere dove iniziare il debug.
Cosa significa un codice di stato 404?
Un 404 Not Found significa che il server non è riuscito a trovare la risorsa richiesta L'URL potrebbe essere scritto male, la pagina potrebbe essere stata eliminata o il collegamento potrebbe essere rotto È un codice di errore client, quindi la richiesta ha raggiunto il server ma ha puntato a qualcosa che non esiste lì.
Qual è la differenza tra un reindirizzamento 301 e un 302?
Un 301 Moved Permanently dice ai client e ai motori di ricerca che la risorsa si è spostata definitivamente, quindi aggiornano i loro collegamenti e trasferiscono i segnali di posizionamento al nuovo URL Un 302 Found è un reindirizzamento temporaneo, quindi l'URL originale dovrebbe continuare a essere utilizzato per richieste future e i motori di ricerca lo mantengono indicizzato.
Cosa significa un Errore Server Interno 500?
Un errore interno del server 500 è un messaggio generico che significa che il server ha colpito una condizione imprevista che non poteva gestire Segnala un problema sul server piuttosto che la richiesta, quindi la correzione è di solito nel codice dell'applicazione o nella configurazione, e i propri registri del server sono il posto dove guardare.
Quando un'API dovrebbe restituire 400 contro 422?
Restituire 400 Bad Request quando la richiesta stessa non è valida, come JSON non valido o un'intestazione richiesta mancante Restituire 422 Contenuto non elaborabile quando la sintassi è valida ma i dati non rispettano le regole aziendali o di convalida, come un'e-mail già presa o un valore fuori intervallo.
Che cos'è un codice 429 Too Many Requests?
A 429 Too Many Request significa che il client ha inviato troppe richieste in breve tempo e la sua velocità è limitata. La risposta spesso include un'intestazione Retry-After che dice al client quanto tempo aspettare prima di riprovare e i client ben educati la onorano con un backoff esponenziale.
Il riferimento al codice di stato HTTP è gratuito?
Sì. Lo strumento è completamente gratuito senza iscrizione e senza limiti, e funziona offline una volta che la pagina è stata caricata perché l'intero elenco viene eseguito nel browser Nulla di ciò che cerchi viene inviato a un server, quindi è sicuro e veloce da usare durante il debug.



