
Status code HTTP: guida dettagliata
Significato delle classi 1xx-5xx e dei codici più comuni
Il protocollo HTTP (Hypertext Transfer Protocol) non è solamente il pilastro della comunicazione web, ma è il linguaggio silente con cui i browser e i server scambiano informazioni e si comprendono reciprocamente. Immagina di avere una conversazione con un amico: le parole che pronunciate rappresentano il contenuto, ma il tono di voce, le pause e le espressioni del viso forniscono contesto e significato. Nel mondo digitale dei browser e dei server, questo “tono” e “contesto” vengono comunicati attraverso gli status code HTTP.
Ogni volta che un browser (spesso chiamato “client”) invia una richiesta a un server, desidera sapere non solo il contenuto richiesto, ma anche lo stato di quella richiesta. È andata a buon fine? C’è stato un errore? Deve guardare altrove? Queste domande trovano risposta negli status code HTTP.
Questi codici a tre cifre forniscono una sintesi immediata del risultato di una richiesta. Grazie a questi codici, i sistemi possono adattare le proprie azioni, gli sviluppatori possono diagnosticare i problemi e gli utenti finali possono comprendere ciò che sta accadendo, anche se in molti casi questi codici operano silenziosamente dietro le quinte.
Ma questi status code non sono solo dei semplici numeri; sono il risultato di decenni di evoluzione del web e della sua infrastruttura. Sono parte delle fondamenta stesse su cui è stato costruito l’Internet moderno. Conoscere il significato e la funzione di ciascuno di questi codici non solo fornisce una comprensione più profonda delle complessità della rete, ma consente anche una gestione e una diagnosi più efficaci dei problemi.
Proseguiamo ora con una panoramica dettagliata degli status code HTTP, esplorando le diverse categorie e ciò che ciascun codice rappresenta nel contesto della comunicazione web.
Status code HTTP
1xx - Risposte informative
Questi codici forniscono feedback durante la fase iniziale del processo di richiesta.
- 100 Continue: Indica che finora tutto va bene e che il client dovrebbe continuare con la richiesta o ignorare il messaggio se è già terminato.
- 101 Switching Protocols: Il server accoglie la richiesta del client di passare a un altro protocollo.
- 102 Processing: Informa il client che il server ha ricevuto e sta elaborando la richiesta, ma non ha ancora terminato.
2xx - Risposte di successo
Questi codici indicano che la richiesta è stata compresa, accettata e processata con successo.
- 200 OK: La richiesta è stata soddisfatta.
- 201 Created: La richiesta è stata soddisfatta e ha portato alla creazione di una nuova risorsa.
- 202 Accepted: La richiesta è stata accettata per l’elaborazione, ma l’elaborazione non è stata completata.
- 203 Non-Authoritative Information: Le informazioni restituite non provengono dal server originale, ma da una copia terza.
- 204 No Content: La richiesta è stata eseguita con successo, ma non c’è nulla da restituire.
- 205 Reset Content: Chiede al client di resettare la visualizzazione del documento.
- 206 Partial Content: Il server sta restituendo solo una parte della risorsa a causa di una richiesta di tipo “range”.
3xx - Redirezioni
I codici in questa categoria indicano che il client deve compiere ulteriori azioni.
- 300 Multiple Choices: Sono disponibili più opzioni per la risorsa richiesta.
- 301 Moved Permanently: La risorsa ha un nuovo indirizzo permanente e future richieste dovrebbero utilizzare questo nuovo URI.
- 302 Found (spesso chiamato anche Moved Temporarily): La risorsa si trova temporaneamente sotto un diverso URI.
- 303 See Other: La risposta a questa richiesta si trova sotto un altro URI e dovrebbe essere recuperata utilizzando GET.
- 304 Not Modified: La risorsa non è stata modificata e il client dovrebbe utilizzare la versione salvata nella cache.
- 307 Temporary Redirect: La risorsa si trova temporaneamente sotto un diverso URI, ma future richieste dovrebbero ancora utilizzare l’URI originale.
- 308 Permanent Redirect: La risorsa ha un nuovo URI permanente e il metodo della richiesta non deve cambiare.
4xx - Errori del client
Questi codici indicano che c’è stato un errore nella richiesta.
- 400 Bad Request: La richiesta non può essere soddisfatta a causa di una sintassi errata.
- 401 Unauthorized: La richiesta necessita di autenticazione.
- 402 Payment Required: Riservato per future esigenze.
- 403 Forbidden: Il server ha compreso la richiesta, ma si rifiuta di soddisfarla.
- 404 Not Found: Il server non ha trovato nulla che corrisponda all’URI richiesto.
- 405 Method Not Allowed: Il metodo specificato nella richiesta non è consentito per la risorsa identificata dall’URI.
- 406 Not Acceptable: La risorsa identificata dall’URI richiesto non può generare una risposta che soddisfi le caratteristiche richieste negli header di accettazione.
- 407 Proxy Authentication Required: Simile al 401, ma indica che il client deve autenticarsi con il proxy.
- 408 Request Timeout: Il client non ha prodotto una richiesta nel tempo in cui il server si aspettava.
- 409 Conflict: La richiesta non può essere completata a causa di un conflitto con lo stato corrente della risorsa.
- 410 Gone: La risorsa richiesta non è più disponibile e non ci saranno ulteriori riferimenti.
5xx - Errori del server
Questi codici indicano che il server ha fallito nel soddisfare una richiesta valida.
- 500 Internal Server Error: Il server ha riscontrato una condizione inattesa.
- 501 Not Implemented: Il server non supporta la funzionalità richiesta.
- 502 Bad Gateway: Il server, mentre agisce come gateway o proxy, ha ricevuto una risposta non valida.
- 503 Service Unavailable: Il server non è pronto per gestire la richiesta.
- 504 Gateway Timeout: Il server, mentre agisce come gateway o proxy, non ha ricevuto una risposta in tempo.
- 505 HTTP Version Not Supported: Il server non supporta la versione del protocollo HTTP utilizzata nella richiesta.
Tabella riepilogativa
| Categoria | Codice | Descrizione | Note |
|---|---|---|---|
| 1xx | 100 | Continue | Il server è pronto a ricevere il resto della richiesta. |
| 1xx | 101 | Switching Protocols | Si passa a un protocollo diverso concordato. |
| 1xx | 102 | Processing | La richiesta è in elaborazione, nessuna risposta finale. |
| 2xx | 200 | OK | Richiesta completata con successo. |
| 2xx | 201 | Created | Risorsa creata con esito positivo. |
| 2xx | 202 | Accepted | Accettata, ma non ancora completata. |
| 2xx | 203 | Non-Authoritative Information | Dati da una fonte intermedia, non originaria. |
| 2xx | 204 | No Content | Nessun corpo risposta, operazione riuscita. |
| 2xx | 205 | Reset Content | Il client deve aggiornare o resettare la vista. |
| 2xx | 206 | Partial Content | Risposta parziale per richieste con range. |
| 3xx | 300 | Multiple Choices | Più risorse possibili, il client deve scegliere. |
| 3xx | 301 | Moved Permanently | Risorsa spostata definitivamente. |
| 3xx | 302 | Found | Spostamento temporaneo verso un altro URI. |
| 3xx | 303 | See Other | Recupera la risorsa con GET su un altro URI. |
| 3xx | 304 | Not Modified | Usa la cache, la risorsa non è cambiata. |
| 3xx | 307 | Temporary Redirect | Redirect temporaneo mantenendo lo stesso metodo. |
| 3xx | 308 | Permanent Redirect | Redirect permanente mantenendo lo stesso metodo. |
| 4xx | 400 | Bad Request | Richiesta non valida o malformata. |
| 4xx | 401 | Unauthorized | Autenticazione richiesta o non valida. |
| 4xx | 402 | Payment Required | Riservato per usi futuri o casi specifici. |
| 4xx | 403 | Forbidden | Accesso negato anche se autenticato. |
| 4xx | 404 | Not Found | Risorsa inesistente o non raggiungibile. |
| 4xx | 405 | Method Not Allowed | Metodo non consentito per la risorsa. |
| 4xx | 406 | Not Acceptable | Nessuna risposta compatibile con gli header di accettazione. |
| 4xx | 407 | Proxy Authentication Required | Autenticazione richiesta dal proxy. |
| 4xx | 408 | Request Timeout | Tempo di attesa superato senza richiesta valida. |
| 4xx | 409 | Conflict | Conflitto con lo stato corrente della risorsa. |
| 4xx | 410 | Gone | Risorsa rimossa definitivamente. |
| 5xx | 500 | Internal Server Error | Errore generico lato server. |
| 5xx | 501 | Not Implemented | Funzionalità non supportata dal server. |
| 5xx | 502 | Bad Gateway | Risposta non valida da upstream o proxy. |
| 5xx | 503 | Service Unavailable | Servizio non disponibile o sovraccarico. |
| 5xx | 504 | Gateway Timeout | Timeout nella comunicazione con upstream. |
| 5xx | 505 | HTTP Version Not Supported | Versione HTTP non supportata dal server. |
Gli status code HTTP forniscono una rapida panoramica dello stato di una richiesta e sono essenziali per la diagnosi e la risoluzione di problemi nel contesto del web. Essere familiari con essi è fondamentale per chiunque lavori nel mondo dello sviluppo e della manutenzione di siti web.