Menu

Codici di stato HTTP

Guida consultabile a tutti i codici di stato HTTP con spiegazioni semplici.

Di Nethanel Bar, Co-founder & CEO

Ultimo aggiornamento

Vuoi imparare a programmare sul serio?

Coddy ti insegna facendoti scrivere codice vero nel browser: lezioni interattive, feedback immediato e aiuto dall'AI quando ti blocchi.

Cosa sono i codici di stato HTTP?

I codici di stato HTTP sono i numeri di tre cifre che un server restituisce in cima a ogni risposta per riassumere cosa è successo. Sono il modo in cui browser, client, proxy e CDN decidono se mettere in cache, reindirizzare, riprovare o mostrare un errore all'utente.

Ogni codice di stato rientra in una di cinque classi in base alla prima cifra: 1xx informativi, 2xx successo, 3xx reindirizzamento, 4xx errore del client, 5xx errore del server. Una volta nota la classe, di solito conosci il significato generale ancora prima di cercare il codice specifico.

La maggior parte delle app usa solo un piccolo nucleo (200, 201, 204, 301, 302, 304, 400, 401, 403, 404, 409, 422, 429, 500, 502, 503). Sapere cosa *significa* ciascuno, e la differenza tra 401 Unauthorized e 403 Forbidden, o tra 301 Moved Permanently e 302 Found, è ciò che ti rende uno sviluppatore backend o di API più solido.

Cosa imparerai usando questo elenco

  • La prima cifra indica sempre la classe: 1xx informativi, 2xx successo, 3xx reindirizzamento, 4xx errore del client, 5xx errore del server.
  • I codici di stato sono *parte del contratto* che un'API offre: i client dovrebbero decidere in base a quelli, non estrarre i messaggi di errore dal body.
  • 4xx significa che il client ha sbagliato qualcosa (input non valido, autenticazione mancante, risorsa inesistente). 5xx significa che il server ha fallito, qualunque cosa abbia fatto il client.
  • Alcuni codici hanno sfumature: 401 vs 403, 301 vs 308, 200 vs 204. Le differenze contano per la cache e per i nuovi tentativi.

Come usare l'elenco dei codici di stato passo dopo passo

  1. Cerca per codice o nome

    Scrivi un numero (404, 429) o una parola chiave (auth, redirect, rate limit) e i codici corrispondenti si filtrano in tempo reale.

  2. Filtra per classe

    Usa i pulsanti delle classi (1xx, 2xx, 3xx, 4xx, 5xx) per restringere l'elenco quando stai esplorando invece di cercare.

  3. Leggi la spiegazione in parole semplici

    Ogni voce spiega quando viene inviato il codice, come si comporta di solito il client e la causa più comune.

  4. Confronta i codici correlati

    Usa i collegamenti tra le coppie che si confondono (401 vs 403, 301 vs 302) per scegliere quello giusto per la tua API.

Classi dei codici di stato HTTP

Le cinque classi di codici di stato HTTP e cosa significano a colpo d'occhio. Definite dalla RFC 9110 e registrate nell'IANA HTTP Status Code Registry.

ClasseSignificatoCodici comuni
1xx InformativiRichiesta ricevuta, in elaborazione100, 101, 103
2xx SuccessoLa richiesta è andata a buon fine200, 201, 204, 206
3xx ReindirizzamentoCerca altrove301, 302, 304, 307, 308
4xx Errore del clientC'è qualcosa che non va nella richiesta400, 401, 403, 404, 409, 422, 429
5xx Errore del serverIl server non è riuscito a soddisfare una richiesta valida500, 502, 503, 504

Codici di stato HTTP comuni da conoscere

200 OK vs 201 Created vs 204 No Content

200 OK

La risposta standard "è andato tutto bene", con un body.

201 Created

È stata creata una nuova risorsa come risultato della richiesta, di solito dopo un POST.

204 No Content

Successo, ma senza body. Comune dopo chiamate DELETE o PUT che non devono restituire dati.

Sono tutti e tre codici di successo: la differenza è cosa contiene la risposta. 201 dovrebbe includere un header Location che punta alla nuova risorsa; 204 è vuoto per definizione.

301 Moved Permanently vs 302 Found

301

Reindirizzamento permanente. Browser e motori di ricerca lo ricordano; il vecchio URL è di fatto morto.

302

Reindirizzamento temporaneo. I browser ricontrollano l'URL originale a ogni richiesta; i segnalibri restano sul vecchio URL.

Usa 301 quando hai davvero spostato una risorsa (rebranding, ristrutturazione degli URL). Usa 302 per reindirizzamenti di breve durata come test A/B, redirect di login o pagine di manutenzione.

401 Unauthorized vs 403 Forbidden

401

Non sei autenticato. Il server non sa chi sei.

403

Il server sa chi sei, ma non hai il permesso per questa risorsa.

Se inviare credenziali diverse potrebbe risolvere, restituisci 401. Se nessuna credenziale aiuterebbe (la risorsa è semplicemente vietata a questo utente), restituisci 403.

500 vs 502 vs 503 vs 504

500

Errore generico del server: il tuo codice ha lanciato un'eccezione non gestita.

502

Bad gateway: un proxy davanti (CDN, load balancer) non è riuscito a raggiungere il server a monte.

503

Servizio non disponibile: il server è attivo ma sovraccarico o in manutenzione.

504

Gateway timeout: un proxy ha raggiunto il server a monte ma non ha ricevuto risposta in tempo.

Sono tutti e quattro errori del server, ma raccontano storie molto diverse a chi fa debug. 500 è la tua app; 502 e 504 indicano il percorso di rete; 503 indica la capacità.

Errori comuni con i codici di stato HTTP

  • Restituire 200 OK con {"error": "..."} nel body. I codici di stato fanno parte del contratto: usa quello giusto (400, 404, 500) così i client possono decidere in base a quello.
  • Usare 401 per gli errori di permesso. 401 è per l'autenticazione; i permessi negati sono 403.
  • Usare 200 per le risorse appena create invece di 201 con un header Location.
  • Restituire 404 per gli accessi non autorizzati. Nasconde la risorsa a chi fa tentativi, ma confonde anche i client che hanno un accesso legittimo. Di solito 403 è più chiaro.
  • Confondere 429 Too Many Requests con 503 Service Unavailable. Usa 429 per i limiti di frequenza per client, 503 per il sovraccarico globale.

Domande frequenti sui codici di stato HTTP

Cosa significa l'errore HTTP 404?
404 Not Found significa che il server ha capito la richiesta ma la risorsa a quell'URL non esiste. Nella maggior parte dei casi il percorso è sbagliato, la risorsa è stata eliminata o l'URL è stato digitato male.
Che differenza c'è tra 401 e 403?
401 Unauthorized significa che non sei autenticato: il server non sa chi sei. 403 Forbidden significa che sei autenticato ma non hai il permesso per la risorsa. Inviare credenziali diverse potrebbe risolvere un 401; non risolverà un 403.
Che differenza c'è tra 301 e 302?
301 Moved Permanently è un reindirizzamento permanente: browser e motori di ricerca aggiornano i loro dati. 302 Found è un reindirizzamento temporaneo: i client continuano a visitare l'URL originale. Usa 301 per gli spostamenti permanenti, 302 per le deviazioni temporanee.
Cosa significa l'errore HTTP 500?
500 Internal Server Error è un errore generico lato server, di solito lanciato quando un'eccezione non gestita risale fino in cima. Il client non ha fatto nulla di sbagliato: è il tuo server che non è riuscito a elaborare una richiesta valida.
Devo usare sempre un codice di stato specifico?
Sì. Un 200 OK generico per gli errori o 500 per qualsiasi problema rende le API più difficili da usare. Scegli il codice più specifico adatto al caso: client, proxy, sistemi di monitoraggio e logiche di retry decidono tutti in base al codice di stato.
Cosa significa HTTP 429?
429 Too Many Requests viene inviato quando un client ha raggiunto un limite di frequenza. La risposta dovrebbe includere un header Retry-After che dice al client quando può riprovare senza problemi.
Cosa significa HTTP 403 Forbidden?
403 Forbidden significa che il server ha capito la richiesta e sa chi sei, ma si rifiuta di farti accedere alla risorsa. A differenza di 401, autenticarti di nuovo non serve: il tuo account semplicemente non ha il permesso. Le cause comuni sono ruoli o scope mancanti, liste di IP consentiti o una risorsa privata di un altro utente.
Cosa significa HTTP 502 Bad Gateway?
502 Bad Gateway significa che un server che fa da proxy o gateway (una CDN, un load balancer o un reverse proxy) ha ricevuto una risposta non valida o vuota dal server a monte a cui ha inoltrato la tua richiesta. Di solito indica che il backend è giù, va in crash o è configurato male, non che la tua richiesta sia sbagliata.
Quanti codici di stato HTTP esistono?
Ci sono cinque classi (1xx-5xx) e circa 60 codici standard registrati presso IANA, anche se la maggior parte si usa raramente. In pratica lo sviluppo web e di API di tutti i giorni si basa su circa 15-20 codici principali: 200, 201, 204, 301, 302, 304, 400, 401, 403, 404, 409, 422, 429, 500, 502 e 503. L'elenco con ricerca qui sopra include ogni codice standard con una descrizione in parole semplici.

Scopri di più

Altri strumenti per sviluppatori

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA