Guida pratica ai codici di errore lato server


Contenuti nascondi

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.

Di Lubaochuan – Opera propria, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=34946450

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:

  1. sovraccarico del server (troppe richieste, saturazione della memoria);
  2. 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’.

503 Service Unavailable

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’.

401 Unauthorized

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.

451 Unavailable For Legal Reasons (Approvato da Internet Engineering Steering Group IESG)

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.

203 Non-Authoritative Information.

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.

SMS Marketing? Inviare SMS promozionali a basso costo Scopri SMSHosting – Oppure usa il codice PROMO: PRT96919