- 1 Che cosa sono i codici di stato
- 2 Errori 5xx – Lato server / hosting
-
3
Errori 4xx – Lato Client / browser
- 3.1 400 Bad Request
- 3.2 401 Unauthorized
- 3.3 402 Payment Required
- 3.4 403 Forbidden
- 3.5 404 Not Found
- 3.6 405 Method Not Allowed
- 3.7 406 Not Acceptable
- 3.8 407 Proxy Authentication Required
- 3.9 408 Request Timeout
- 3.10 409 Conflict
- 3.11 410 Gone
- 3.12 411 Length Required
- 3.13 412 Precondition Failed
- 3.14 413 Request Entity Too Large
- 3.15 414 Request-URI Too Long
- 3.16 415 Unsupported Media Type
- 3.17 416 Requested Range Not Satisfiable
- 3.18 417 Expectation Failed
- 3.19 418 I’m a teapot
- 3.20 420 Enhance your calm
- 3.21 422 Unprocessable Entity
- 3.22 426 Upgrade Required (RFC 2817)
- 3.23 429 Too many requests
- 3.24 431 Request Header Fields Too Large
- 3.25 449 Retry With
- 3.26 451 Unavailable For Legal Reasons (Approvato da Internet Engineering Steering Group IESG)
- 4 2xx Success
- 5 3xx Redirect
Che cosa sono i codici di stato
I codici di stato sono numeri di 3 cifre che indicano, in modo univoco, una tipologia di errore che si è presentata all’interno di un servizio oppure di una pagina web. In alcuni casi possono essere considerati dei codici di errore, perchè rappresentano uno scenario problematico per il funzionamento del servizio stesso. In altri casi, invece, indicano semplicemente lo stato della richiesta HTTP.
Le request HTTP sono, in questo contesto, i “messaggi” che vengono inviati e ricevuti all’interno del modello client-server. Di fatto, ogni request ed ogni response può ottenere associato ai dati della risposta un numeretto di 3 cifre che poi non è altro se non il codice di stato, detto comunemente anche status code.
Errori 5xx – Lato server / hosting
Gli errori 5xx indicano una classe di errori che interessano il server, e che possono essere riportati sia nella finestra del browser dentro il sito o la web app, sia dentro i log del server (ad esempio /var/log/apache2/errors.log). Questi errori indicano generalmente un problema grave o non superabile che impedisce la visualizzazione della pagina web o l’espletamento della richiesta.
Essi fanno riferimento ad una richiesta fallita: se ad esempio avete provato a fare un bonifico online e vi appare un errore lato server che inizia col numero 5, significa che il bonifico non è probabilmente andato a buon fine).
500 Internal Server Error
Il più delle volte l’errore 500 è un problema legato a:
- sovraccarico del server (troppe richieste, saturazione della memoria);
- un errore di sintassi nel codice del sito oppure in qualche file di direttive (ad esempio htaccess o httpd)
La notifica di errore HTTP 500, in altri termini, è il modo in cui un server ci dice che il server ha generato un errore interno non specificato, che poi potrà essere tracciato dal webmaster all’interno dei file di log del server. L’utente esterno non può fare nulla per risolvere, in questo caso, essendo un errore lato server: deve risolvere il webmaster.
Se state sviluppando in WordPress la modalità di debug viene esattamente incontro a questo genere di necessità, quindi sul server dove trovate l’errore 500 andate ad aggiungere al file wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
L’errore 500 è pertanto un errore lato server generico, che non fornisce dettagli su quale sia il problema e che in genere è dovuto a:
- errori di sintassi nel file di direttive htaccess;
- errori di sintassi in qualche file PHP;
- errore logico nel codice;
- loop infinito nel codice;
- …
Soluzioni da provare per questo errore:
- si suggerisce di abilitare la modalità debug del sito o dell’app e verificare il problema nel dettaglio aggiornando la pagina più volte, fino a identificare l’errore specifico che si verifica;
- provate ad aggiornare il sistema operativo della vostra VPS, la versione di PHP oppure quella di MySQL;
501 Not implemented
L’errore 501 è un errore lato server che indica che il server non può richiamare il metodo o la procedura indicata all’interno dell’URL, il che in genere è dovuto a:
- errori di sintassi in qualche file PHP;
- mancanza di dipendenze caricate a livello di librerie (mancanti o corrotte, ad esempio);
- errore logico nel codice;
- …
Si suggerisce di abilitare la modalità debug del sito o dell’app e verificare il problema nel dettaglio aggiornando la pagina, fino a fare apparire l’errore specifico che si verifica.
502 Bad Gateway
Il server in questo caso ha ricevuto un errore irreversibile da un servizio intermediario, tipicamente un server proxy oppure un gateway oppure, ancora, un servizio come CloudFlare. Se usate CloudFlare potete superare l’errore cancellando la cache di CloudFlare oppure provando a disabilitare temporaneamente o definitivamente, a seconda dei casi, il servizio stesso.
Generalmente è una condizione temporanea, e potrebbe andare via riprovando dopo un po’.
Il server non può rispondere alla richiesta perchè non è disponibile, forse perchè ci sono troppe richieste oppure è saturo oppure, ancora, in manutenzione. Generalmente è una condizione temporanea, e potrebbe andare via riprovando dopo un po’.
504 Gatewat Timeout
Il server non può rispondere alla richiesta perchè è andato in timeout, cioè impiega troppo tempo a rispondere ed è scaduta, nel frattempo. Questo vuol dire che si potrebbe dover valutare di aumentare il timeout delle risposte lato server. In alcuni casi può essere dovuto a loop nel codice, oppure a servizi programmati male oppure, ancora, a condizioni logiche che non si realizzano mai.
505 HTTP Version Not Supported
Il codice di stato 505 indica che la versione HTTP utilizzata nella richiesta non è supportata dal server.
Soluzioni da provare:
- Verifica a livello di codice PHP quello che è successo in corrispondenza dell’errore, e cerca quello specifico nei log di sistema che l’ha causato
- Prova a svuotare cache e cronologia del browser
- Controlla che l’ora di sistema sia impostata in modo corretto
- Prova a disinstallare e reinstallare il browser o l’app
- Fai una scansione antivirus
- Se sei su smartphone, prova a liberare spazio, ad aggiornare il sistema operativo oppure a ripristinare le impostazioni di fabbrica del telefono.
509 Bandwidth Limit Exceeded
Questo errore indica che la banda massima dell’hosting è stata superata, per cui il sito ha esaurito le quote (ad esempio mensili) e non potrà più funzionare. In alcuni casi può essere causato da un attacco DDoS che ha consumato tutta la banda a disposizione.
Soluzioni? Puoi provare a contattare il tuo servizio di hosting, se sei il proprietario del sito, per chiedere come risolvere il problema.
Errori 4xx – Lato Client / browser
Questi sono errori lato client, che a differenza degli altri possono generalmente essere risolti intervenendo sul browser che state usando. Nel caso di uso di AJAX o tecnologie simili che richiamano codice lato server via Javascript, insomma, è possibile che un errore 4xx sia annesso ad una request che è stata formulata o composta in modo errato. Tipiche soluzioni al problema sono, ad esempio:
- aggiornare il browser in suo all’ultima versione
- disinstallare addon e plugin del browser, anche temporaneamente
- verificare che l’orario di sistema sia corretto
- aggiornare il sistema operativo
- verificare che la connessione ad internet funzioni bene
400 Bad Request
Si tratta di una notifica da parte del servizio che avvisa l’utente che la pagina web o la funzionalità che avete richiesto non è disponibile, perchè è formulata in un formato non corretto. È possibile ad esempio che ci sia un errore nella richiesta o nella risposta in formato XML o JSON.
Per risolvere è necessario fare debug se siete un programmatore, altrimenti vi conviene riprovare in un secondo momento ad accedere al servizio e pazientare un po’.
Il codice di risposta dello stato di errore del client non autorizzato HTTP 401 indica che la richiesta non è stata applicata perché mancano username e password di autenticazione corrette. Per risolvere, provare ad inserire credenziali diverse oppure contattare i gestori del sito web.
402 Payment Required
Questo codice di risposta è riservato per uso futuro. L’obiettivo iniziale per la creazione di questo codice era utilizzarlo per i sistemi di pagamento digitale, tuttavia questo codice di stato viene utilizzato molto raramente e non esiste alcuna convenzione standard.
403 Forbidden
Il cliente non ha diritti di accesso al contenuto; cioè, non è autorizzato, quindi il server si rifiuta di fornire la risorsa richiesta. A differenza di 401, l’identità del client è nota al server.
404 Not Found
Questo è un errore classico dei siti web, ed indica che la pagina che avete provato ad aprire non esiste oppure è stata cancellata o spostata. Il server non riesce a trovare, in altri termini, la risorsa o i contenuti in questione. Nel browser questo significa che l’URL non viene riconosciuto. In un’API, ciò può anche significare che l’endpoint è valido, ma la risorsa stessa non esiste. I server possono anche inviare questa risposta invece di 403 per nascondere l’esistenza di una risorsa da un client non autorizzato.
Questo codice di risposta è probabilmente il più famoso a causa della sua frequente presenza su vari siti web le cui pagine appaiono, scompaiono e ricompaiono senza preavviso.
405 Method Not Allowed
La richiesta è stata eseguita usando un metodo non consentito dalla policy del sistema.
406 Not Acceptable
La risorsa richiesta è solo in grado di generare contenuti non accettabili secondo la header Accept inviato nella richiesta.[2]
407 Proxy Authentication Required
Per proseguire, il client deve autenticarsi sul proxy, cosa che non ha potuto fare.
408 Request Timeout
Il tempo per inviare la richiesta è scaduto e il server ha terminato la connessione. Che sfiga!
409 Conflict
Il codice di stato della risposta di conflitto HTTP 409 indica un conflitto di richiesta con lo stato corrente della risorsa di destinazione.
È più probabile che si verifichino conflitti in risposta a una richiesta PUT. Ad esempio, potresti ricevere una risposta 409 quando carichi un file che è più vecchio di quello già presente sul server, causando un conflitto di controllo della versione.
410 Gone
Indica che la risorsa richiesta non è più disponibile e non lo sarà più in futuro.
411 Length Required
La richiesta non specifica la propria dimensione come richiesto dalla risorsa richiesta.
412 Precondition Failed
Il server non soddisfa una delle precondizioni che il richiedente ha inserito nella richiesta.
413 Request Entity Too Large
La richiesta è più grande di quanto il server possa gestire.
414 Request-URI Too Long
L’URI richiesto è troppo lungo per essere elaborato dal server.
415 Unsupported Media Type
L’entità della richiesta è di un tipo non accettato dal server o dalla risorsa richiesta.
416 Requested Range Not Satisfiable
Il client ha richiesto un pezzo di request, ma il server non riesce a restituirlo. Possibile problema di connessione, forse.
417 Expectation Failed
Il server non rispetta i requisiti del campo header di una richiesta Expect.
418 I’m a teapot
Pesce d’aprile! Questa è una notifica di errore scherzosa, che non deve essere presa sul serio. L’RFC specifica che questo codice di stato dovrebbe essere restituito dalle teiere a cui viene erroneamente richiesto di preparare del caffè.
420 Enhance your calm
Su twitter indica che stai utilizzando troppe risorse e sei stato per questo motivo limitato. Riprova più tardi!
422 Unprocessable Entity
C’è una risposta anomala che il server non è riuscito a processare.
426 Upgrade Required (RFC 2817)
Devi aggiornare la chiamata al protocollo SSL, e passare almeno a quello con TLS.
429 Too many requests
Stai facendo richieste troppo velocemente ed il server ti sta limitando, ad esempio stai richiamando troppe volte una risorsa dentro il loop di uno script.
431 Request Header Fields Too Large
La dimensione degli header è troppo grande perchè la request venga elaborata.
449 Retry With
Su server Microsoft, questo errore indica che devi riprovare più tardi.
Il contenuto della pagina web non è disponibile per motivi legati a problemi di censura o di diritti d’autore.
2xx Success
Evviva: in questi casi la request ha funzionato! Quelli che seguono sono gli status associati a queste situazioni.
200 OK
Risposta standard per le richieste HTTP andate a buon fine.
201 Created
La richiesta è stata soddisfatta, restituendo la creazione di una nuova risorsa.
202 Accepted
La richiesta di elaborazione è stata accettata ma non è ancora terminata.
Il server è un transforming proxy (ad es. un Web Accelerator) che ha ricevuto un 200 OK dalla sua origine, ma sta restituendo una versione modificata della risposta dell’origine
204 No Content
Il server ha processato con successo la richiesta e non restituirà nessun contenuto.
205 Reset Content
Il server ha processato con successo la richiesta e non restituirà nessun contenuto. Al contrario della risposta 204, questa richiede che il richiedente resetti il document view.
206 Partial Content
Il server sta consegnando solo parti della risorsa.
207 Multi-Status
In caso di risposte XML, quando più azioni possono essere richieste, i dettagli dei singoli stati sono dati nel corpo della risposta. Vedi WebDAV (RFC 4918) per le specifiche associate.
208 Already Reported
Utilizzato all’interno di un elemento di risposta DAV: propstat per evitare di enumerare ripetutamente i membri interni di più collegamenti alla stessa raccolta.
3xx Redirect
Questi codici di stato sono di redirezionamento da una request all’altra, ed interessano soprattutto i SEO lato tecnico.
300 Multiple Choices
Sono possibili più di un redirect a seconda dei casi, ad esempio per questioni di efficenza.
301 Moved Permanently
Indica una redirezione permanente, valida sia per i browser che per i crawler dei motori, da una risorsa A ad una B.
302 Found
Indica una redirezione temporanea, valida per i browser ma non per i crawler dei motori, da una risorsa A ad una B.
303 See Other
Il codice di risposta dello stato di reindirizzamento 303 Vedi altro indica che i reindirizzamenti non si collegano alle risorse appena caricate, ma a una pagina web diversa (come una pagina di conferma o una pagina di avanzamento del caricamento). Questo codice di risposta viene restituito come risultato di PUT o POST. Il metodo utilizzato per visualizzare questa pagina reindirizzata è sempre di tipo GET.
304 Not Modified
Indica che la risorsa non è stata modificata a causa della versione specificata dagli header di richiesta If-Modified-Since o If-None-Match.
305 Use Proxy (da HTTP/1.1)
La risorsa richiesta è disponibile solo passando da un proxy, il cui indirizzo viene fornito nella risposta.
306 Switch Proxy
Non più usato.
307 Temporary Redirect (da HTTP/1.1)
Le risposte 307 dovrebbero comportarsi similmente alle 302.
308 Permanent Redirect (approvato come RFC sperimentale)
Le risposte 308 dovrebbero comportarsi similmente alle 301.