Spiegazione dei codici di stato HTTP
Questo tutorial riguarda i seguenti argomenti:
Ogni utente di Internet ha visto la pagina “Non trovato” con il codice a tre cifre “404” ad un certo punto. Questa è una risposta HTTP dal server del sito web che stai visitando, che ti dice che l’URL richiesto non esiste. Il codice “404 Not Found” è uno dei tanti codici di stato di risposta HTTP e ognuno ha un significato diverso. Il tratto comune che condividono è che sono risposte del server alle tue richieste.
Continua a leggere per scoprire di più su cosa sia un codice di stato HTTP e cosa significa ogni codice.
Che cos’è un codice di stato HTTP?
Tutte le interazioni tra il tuo browser e un sito web si basano sul principio di richiesta-risposta. Ogni volta che digiti un indirizzo nel tuo browser, fai clic sul link di una pagina web, scarichi un file o esegui qualsiasi azione online, il tuo browser (client) invia una richiesta HTTP al server del sito web. Il server elabora la richiesta e restituisce una risposta HTTP.
La risposta contiene due parti: corpo e intestazioni. Il corpo di solito è costituito da contenuti visualizzati dal browser: testo, immagini, video, ecc. Alcune risposte non generano contenuti, quindi il corpo potrebbe essere vuoto.
Le intestazioni contengono metadati sulle risposte: il codice di stato HTTP, il tipo di server e altre informazioni importanti.
I codici di stato HTTP sono composti da 3 cifre. La prima cifra rappresenta la categoria della risposta, mentre le ultime due cifre definiscono la risposta specifica.
Ci sono cinque categorie che raggruppano le risposte su un tratto comune o uno scopo che condividono:
- 1XX codici – Codici informativi che il server restituisce per dire al client che la richiesta è in corso.
- 2XX codici – Codici riusciti che indicano che la richiesta è stata riconosciuta e viene gestita.
- 3XX codici – Codici che specificano che ci sarà un redirection.
- 4XX codici- Questi sono codici di errore che segnalano un problema con la richiesta inviata dal client (browser).
- 5XX codici – Errori provenienti dal server del sito web che impediscono di inviare una risposta valida.
Un elenco completo di codici di stato HTTP
Ci sono oltre 50 codici di stato HTTP ufficiali riconosciuti da Internet Assigned Numbers Authority (IANA) che è responsabile del mantenimento e della gestione degli standard Internet, incluso il registro dei codici HTTP.
Esamineremo tutti i codici ufficiali e anche alcuni dei codici non ufficiali più popolari utilizzati in piattaforme e servizi specifici.
Codici 1XX
I codici 1XX sono risposte informative dal server del sito web. Non generano contenuti e aggiornano solo i clienti sullo stato di avanzamento delle loro richieste. Queste informazioni vengono inviate nelle intestazioni della risposta HTTP.
- 100 “Continue” – Il server ha ricevuto le intestazioni della richiesta. Ora dice al tuo browser di procedere con l’invio del corpo della richiesta.
- 101 “Switching Protocols” – Il client richiedente (browser) ha chiesto al server di modificare i protocolli e il server ha soddisfatto la richiesta.
- 102 “Processing” – Questa è una risposta principalmente associata alle richieste WebDAV che potrebbero richiedere più tempo per essere completate. Indica che il server ha ricevuto la richiesta e la sta elaborando.
- 103 “Early Hints” – Il server restituisce alcune intestazioni di risposta prima che venga inviata la risposta HTTP finale.
Codici 2XX
I codici 2XX sono le migliori risposte che puoi ricevere. Indicano che la richiesta è stata riconosciuta dal server, è stata accettata ed è in fase di elaborazione.
- 200 “OK” – La risposta per una richiesta HTTP riuscita. Il risultato dipenderà dal tipo di richiesta.
- 201 “Created” – La richiesta è stata soddisfatta e il server ha creato una nuova risorsa.
- 202 “Accepted” – Il server ha accettato la richiesta ma non ha ancora terminato l’elaborazione. La richiesta potrebbe essere soddisfatta o rifiutata, ma il risultato è ancora indeterminato.
- 203 “Non-Authoritative Information” – Un codice che di solito appare quando viene utilizzato un servizio proxy. Il server proxy ha ricevuto un codice di stato 200 “OK” dal server di origine e restituisce una versione modificata della risposta dell’origine.
- 204 “No Content” – Il server ha soddisfatto la richiesta ma non restituirà alcun contenuto.
- 205 “Reset Content” – Il server ha soddisfatto la richiesta e non restituirà alcun contenuto ma chiederà al client (browser) di reimpostare la vista del documento.
- 206 “Partial Content” – Il server restituisce solo una parte delle risorse richieste perché il browser utilizza “intestazioni di intervallo”. Queste intestazioni consentono ai browser di riprendere i download o dividere i download in più flussi simultanei.
- 207 “Multi-Status” – Un codice associato a WebDav quando viene fatta una richiesta composta . Il server restituisce un messaggio contenente un array di codici di risposta per tutte le sub-requests.
- 208 “Already Reported” (WebDav) – Questo codice indica che i membri interni di un’associazione DAV sono stati già enumerati in una parte precedente della risposta e non verranno enumerati di nuovo.
- 226 “IM Used” – Il server ha soddisfatto la richiesta e la risposta è una rappresentazione del risultato di una o più manipolazioni di istanze applicate all’istanza corrente.
Codici 3XX
I codici 3XX specificano che ci sarà un reindirizzamento. I reindirizzamenti sono comunemente usati quando una risorsa viene spostata a un nuovo indirizzo. I diversi codici 3XX istruiscono i browser su come deve essere eseguito il reindirizzamento.
- 300 “Multiple Choices” – Il server presenta al client una scelta di più risorse tra cui scegliere. Il codice di stato viene applicato quando si utilizza il browser per scaricare i file e viene data la possibilità di scegliere l’estensione del file o quando vengono presentate le opzioni per la disambiguazione del senso delle parole.
- 301 “Moved Permanently” – Questo è il codice per un reindirizzamento permanente. Significa che l’URL della risorsa richiesta viene sostituito in modo permanente con un nuovo indirizzo e i motori di ricerca dovrebbero aggiornare l’URL nei loro database.
Leggi questa guida sulla creazione di reindirizzamenti per ulteriori informazioni.
- 302 “Found” – In precedenza, questo codice era noto come “Spostato temporaneamente”. Indica ai browser che la risorsa richiesta viene spostata temporaneamente a un nuovo URL, ma il nuovo indirizzo può essere modificato di nuovo in futuro. Pertanto, l’URL originale dovrebbe essere ancora utilizzato dal cliente. Il codice viene utilizzato per reindirizzamenti temporanei.
- 303 “See Other” – Il server indica al client di aver trovato la risorsa, ma deve essere recuperata su un altro URL con una richiesta GET.
- 304 “Not Modified” – Il server informa il tuo browser che la risorsa non è stata modificata dall’ultima volta che l’hai richiesta. Il tuo browser può continuare a utilizzare la versione memorizzata nella cache che già memorizza localmente.
- 305 “Use Proxy” – La risorsa richiesta è disponibile solo tramite un proxy. Questo codice è ora deprecato e i browser lo ignorano.
- 306 “Switch Proxy” – Questo codice non è più in uso. Significa che le seguenti richieste dovrebbero utilizzare il proxy specificato.
- 307 “Temporary redirect” – Questo è il nuovo codice per i reindirizzamenti temporanei che ha sostituito il codice HTTP 302. Specifica che la risorsa richiesta è stata spostata su un altro URL. A differenza del codice HTTP 302, il codice HTTP 307 non consente la modifica del metodo di richiesta HTTP. Ad esempio, se la prima richiesta era GET, anche la seconda richiesta dovrebbe essere GET.
- 308 “Permanent Redirect” – La risorsa richiesta viene spostata in modo permanente a un altro URL e tutte le richieste future devono essere reindirizzate al nuovo indirizzo. Il codice è simile al codice HTTP 302, l’unica differenza è che non consente ai browser di modificare il tipo di richiesta HTTP.
Codici 4XX
I codici 4XX sono codici di stato di errore HTTP. Definiscono gli errori come richieste non valide dal tuo browser che il server del sito web non può elaborare. Il problema potrebbe essere un errore di sintassi nella richiesta, URL inesistente, credenziali errate, ecc. Il tuo browser di solito produce una pagina con un particolare codice di errore.
- 400 “Bad Request” – Il server non può restituire una risposta valida a causa di un errore da parte del client. Le cause più comuni sono URL richiesti non corretti, routing delle richieste ingannevole, file di grandi dimensioni, etc.
Per ulteriori informazioni, controlla questo tutorial su cos’è un errore HTTP “400 Bad Request” e come risolverlo.
- 401 “Unauthorized” – Questo errore viene visualizzato quando il client non è riuscito a fornire una risposta valida e la risposta dal server include un’intestazione WWW-Authenticate. È probabile che tu veda questo errore quando tenti di accedere a una URL protetta da password e non hai le informazioni di accesso.
Se riscontri questo problema, controlla questa guida per la risoluzione dei problemi dell’errore HTTP 401.
- 402 “Payment Required” – Questo non è un codice standard, tuttavia è riservato per essere utilizzato in futuro dai sistemi di pagamento. Lo scopo del codice è quello di indicare che il contenuto non è disponibile a causa di un pagamento non riuscito.
- 403 “Forbidden” – L’errore indica che il server nega l’accesso a un utente che non dispone dell’autorizzazione per accedere alle risorse. Questo errore è simile al codice HTTP 401, ma la differenza è che in questo caso l’identità dell’utente è nota.
Le cause tipiche di questo errore sono le regole restrittive del server del sito web, i permessi insufficienti dei file e delle cartelle del sito web, ecc.
Per ulteriori informazioni, leggi questo articolo sull’errore HTTP 403 e su come correggerlo.
- 404 “Not found” – Questo è l’errore più frequente che gli utenti vedono online. Significa che il server non riesce a trovare la risorsa richiesta. Di solito, la causa è che l’URL a cui stai tentando di accedere non esiste.
L’errore potrebbe anche essere causato da un’errata configurazione del sito web. Leggi la seguente guida per la risoluzione dei problemi HTTP error 404.
- 405 “Method Not Allowed” – Il server comprende il metodo richiesto, ma la risorsa di destinazione non lo supporta.
- 406 “Not Acceptable” – La risorsa richiesta ha generato contenuti che non soddisfano i criteri dello user-agent che lo ha richiesto.
- 407 “Proxy Authentication Required” – Esiste un server proxy utilizzato nella comunicazione tra il browser e il server e richiede l’autenticazione.
- 408 “Request Timeout” – Il server è stato chiuso a causa di un timeout durante l’attesa di una richiesta dal browser. In alcuni casi, i server possono inviare questo messaggio su una connessione inattiva anche senza alcuna richiesta precedente da client.
Va notato che i server possono chiudere la connessione senza inviare un messaggio.
- 409 “Conflict” – Questo errore si verifica quando una richiesta non può essere elaborata a causa di un conflitto nello stato corrente della risorsa sul server. Un esempio di questo errore è quando più modifiche dello stesso file vengono inviate al server e le modifiche sono in conflitto tra loro.
- 410 “Gone” – La risorsa richiesta non è disponibile e non sarà disponibile in futuro. Non viene sostituito con una nuova risorsa su un nuovo indirizzo, quindi i client devono rimuovere eventuali collegamenti e cache relativi alla risorsa. Ad esempio, i motori di ricerca dovrebbero rimuovere le informazioni della risorsa dai loro database.
- 411 “Length Required” – La lunghezza del contenuto della richiesta non è specificata e la risorsa sul server lo richiede.
- 412 “Precondition failed” – Le intestazioni della richiesta specificano alcune precondizioni che il server non riesce a soddisfare.
- 413 “Payload too large” – La richiesta è più grande dei limiti specificati sul server, quindi il server non può elaborare la request.
Potresti vedere questo errore sul tuo sito WordPress quando tenti di caricare un file e la sua dimensione supera il limite di caricamento del tuo sito web. Se riscontri questo problema, leggi questa guida sull’errore “413 Entity Too Large” in WordPress.
- 414 “URI Too Long” – La lunghezza dell’URI è troppo lunga e il server non può elaborarla. Di solito, questo è il risultato di una richiesta GET contenente troppi dati e quindi deve essere modificata in una richiesta POST.
- 415 “ Unsupported Media Type” – La richiesta contiene un tipo di supporto che il server non supporta. Ad esempio, provi a caricare un file immagine in formato .jpg, ma il server non lo supporta.
- 416 “Range Not Satisfiable” – La richiesta richiedeva una parte della risorsa che il server non può fornire. Questo errore può verificarsi quando il tuo browser richiede una parte di un file che è al di fuori della fine del file.
- 417 “Expectation Failed” – Il server non soddisfa i requisiti impostati nel campo di intestazione expect della richiesta.
- 418 “I’m a teapot.” – Questo errore viene restituito dalle teiere richieste per preparare il caffè. È un pesce d’aprile che risale al 1998.
- 421 “Misdirected Request” – La richiesta è stata indirizzata a un server incapace di produrre una risposta.
- 422 “Unprocessable Entity” – La richiesta del client è ben formulata ma contiene errori semantici che impediscono al server di elaborare una risposta.
- 423 “Locked” – La risorsa a cui si accede è bloccata.
- 424 “Failed Dependency” – La richiesta non è riuscita perché dipendeva da un’altra richiesta non riuscita.
- 425 “Too Early” – Questo errore indica che il server non è disposto a rischiare l’elaborazione di una richiesta che potrebbe essere riprodotta.
- 426 “Upgrade Required” – Il server rifiuta la richiesta utilizzando i protocolli correnti come indicato dall’intestazione upgrade inviata in risposta. È disposto ad accettare la richiesta se il client esegue l’aggiornamento a un altro protocollo.
- 428 “Precondition Required” – Il server richiede che la richiesta sia condizionale. Nella maggior parte dei casi, questa risposta viene utilizzata per prevenire conflitti quando un client utilizza il metodo GET per richiedere una risorsa, la modifica e quindi utilizza PUT per caricare la nuova versione mentre un’altra parte potrebbe aver modificato la stessa risorsa.
- 429 “Too many requests” – Il server risponde con questo codice quando l’utente ha inviato troppe richieste nel tempo indicato e ha superato il limite di velocità.
Potresti vedere questo errore sul tuo sito web WordPress se bot o script dannosi tentano di accedere alla dashboard. In tal caso, si consiglia di modificare l’URL di accesso che può essere facilmente eseguito dalle impostazioni Sicurezza di accesso del plugin Security Optimizer.
Potresti anche vedere questo errore quando tenti di installare un SSL Let’s Encrypt, ma hai accumulato troppe richieste non riuscite. Per maggiori informazioni, leggi questa guida: Let’s Encrypt errore “429 Too Many Requests”, “No Domains Authorized” o “Certificate is not for the chosen domain”.
- 431 “Request Header Fields Too Large” – Il server non può elaborare la richiesta perché i suoi campi di intestazione individuali o tutti i campi di intestazione combinati sono troppo grandi. Il cliente può inviare una nuova richiesta se la dimensione è ridotta.
- 451 “Unavailable for Legal Reasons” – Il client richiede una risorsa per la quale il server è legalmente obbligato a negare l’accesso, come una pagina web censurata dal governo.
Codici 5XX
I codici HTTP 5XX indicano che c’è un problema sul server del sito web che impedisce l’elaborazione di una richiesta. Come i codici 4XX, vedrai una pagina di errore sul tuo browser quando viene attivato un errore 5XX.
- 500 “Internal Server Error” – È un errore generico che indica che il server ha riscontrato una condizione imprevista e non può soddisfare la richiesta. Il server ti dice che c’è qualcosa che non va, ma non è sicuro di quale sia il problema.
Di solito, il problema deriva dalla configurazione del sito web dal lato del cliente. Leggi questo tutorial su cos’è un “HTTP Error 500 – Internal Server Error” e come correggerlo per maggiori informazioni.
- 501 “Not Implemented” – Il server non supporta il metodo di richiesta o non ha la capacità di soddisfare la richiesta.
- 502 “Bad Gateway” – Questo errore indica che il server ha agito come gateway o proxy e ha ricevuto una risposta non valida dal server upstream. Questa è la descrizione ufficiale, ma ci sono vari fattori che possono stressare questo errore. Scopri di più sull’errore HTTP 502 “Bad Gateway” e su come risolverlo.
- 503 “Service Unavailable” – Il server non può gestire la richiesta. Di solito si tratta di una condizione temporanea causata da un sovraccarico o da una manutenzione continuativa sul server. Leggi questa guida su cos’è l’errore HTTP 503 “Service Unavailable” e come risolverlo.
- 504 “Gateway Timeout” – Il server ha agito come gateway e non ha ricevuto una risposta tempestiva dal server upstream. Nella maggior parte dei casi, questo errore è causato dallo script PHP che non termina in tempo e supera il limite di timeout variabile PHP max_execution_time del server, quindi il server termina la connessione. Vedi maggiori dettagli in questo articolo su HTTP 504 “Gateway Timeout” e come risolverlo.
- 505 “HTTP Version Not Supported” – Il server non supporta la versione HTTP utilizzata nella richiesta.
- 506 “Variant Also Negotiates” – Questo errore si verifica quando il client e il server entrano in Transparent Content Negotiation, che consente al client di recuperare la migliore variante di una risorsa quando il server supporta. Tuttavia, c’è un errore di configurazione e la risorsa richiede anche la raccolta del contenuto, che causa un loop chiuso.
- 507 “Insufficient Storage (WebDAV) – Il server non è in grado di memorizzare la rappresentazione necessaria per completare la richiesta.
- 508 “Loop Detected” (WebDAV) – Il server ha rilevato un loop infinito durante l’elaborazione della richiesta.
- 510 “Not Extended” – Sono necessarie ulteriori estensioni alla richiesta affinché il server la soddisfi. Questo codice è ora deprecato.
- 511 “Network Authentication Required” – Questa risposta viene inviata quando è necessario autenticarsi in modo che la rete possa inviare la richiesta a un server. Più comunemente, si verifica quando si tenta di utilizzare una rete Wi-Fi e devi accettare i suoi Termini di accordo.
Alcuni codici di stato HTTP non ufficiali
I codici di cui sopra sono ufficialmente riconosciuti da IANA , ma diverse piattaforme utilizzano codici HTTP non ufficiali per indicare problemi specifici relativi ai loro servizi. I seguenti codici sono utilizzati in alcuni dei servizi online più popolari.
- 430 “Request Header Fields Too Large” – Questo codice viene utilizzato da Shopify quando vengono richiesti troppi URL contemporaneamente. È simile un codice HTTP 429 “Too many requests”.
- 440 “Login Time-out” – Questo codice è utilizzato da Microsoft’s ISS (Internet Information Services). La sessione di accesso del cliente è scaduta e deve accedere di nuovo.
- 494 “Request header too large” – utilizzato da NGINX. Il cliente ha inviato una richiesta troppo grande o una riga di intestazione troppo lunga.
- 495 “SSL Certificate Error” – Questo è anche un codice di stato utilizzato da NGINX che segnala che il client ha fornito un certificato SSL non valido.
- 496 “SSL Certificate Required” – utilizzato da NGINX. Un certificato client è richiesto ma non è fornito.
- 499 “Client Closed Request”- Il client ha terminato la richiesta prima che il server potesse inviare una risposta. Un altro codice utilizzato da NGINX.
- 520 “Web Server Returned an Unknown Error” – Questo è un codice utilizzato da Cloudflare. Specifica che il server di origine ha restituito una risposta inaspettata o sconosciuta a Cloudflare.
- 521 “Web Server is Down” – Un altro codice di errore specifico di Cloudflare. Il server di origine ha rifiutato la connessione a Cloudflare. Questo errore potrebbe essere causato dal firewall di origine che blocca gli IP di Cloudflare.
- 525 “SSL Handshake Failed” – Utilizzato da Cloudflare. Cloudflare non è in grado di stabilire un handshake SSL/TLS con il server di origine.
- 526 “Invalid SSL Certificate” – Un altro codice utilizzato da Cloudflare. Cloudflare non ha potuto convalidare l’SSL installato sul server di origine. Di solito, è causato da un SSL non valido o mancante sul server di origine. Leggi questa guida su come installare Let’s Encrypt per il tuo sito web ospitato su SiteGround.
Come posso controllare i codici di stato HTTP su un sito web?
Molti dei codici non sono visibili sulle prime pagine e di solito vedi una pagina solo per i codici di errore 4XX e 5XX. Tuttavia, ci sono diversi metodi che puoi utilizzare per vedere tutti i codici di risposta che un sito web genera. È possibile utilizzare lo strumento Ispezione del browser (strumenti per sviluppatori), script JavaScript o PHP o vari controlli online. Esamineremo alcuni dei metodi più popolari.
Controlla i codici di stato da Google Chrome Developer Tools
Uno dei modi più semplici e veloci per controllare i codici di stato per le risposte HTTP su un sito web è utilizzare gli strumenti per sviluppatori nel browser Chrome. Per accedervi, fai clic con il pulsante destro del mouse sulla pagina del sito web per aprire il menu di dialogo e seleziona Ispeziona, o premi F12.
Quindi, apri la console degli strumenti per sviluppatori e seleziona Rete. Aggiorna la pagina facendo clic sul pulsante Ricarica o premendo Command+R per Mac (F5 per Windows). La pagina mostrerà tutte le risposte alle richieste inviate dal tuo browser verso il sito web.
Il codice per ogni risposta può essere visto sotto la colonna Stato. Per visualizzare le intestazioni complete, fare clic una volta sulla risposta. Apparirà una nuova sezione in cui è possibile selezionare Intestazioni. Vedrai i dettagli della richiesta originale dal tuo browser, il codice di stato HTTP e le intestazioni di risposta.
Controlla i codici di stato da Mozilla Firefox Web Developer Tools
Simile a Chrome, è possibile visualizzare i codici di risposta dalla console Web Developer Tools in Mozilla Firefox. Premi F12 o fai clic con il pulsante destro del mouse sulla pagina del sito web e seleziona Analizza dal menu di dialogo.
Dovrai aggiornare la pagina premendo il pulsante Ricarica o utilizzando la scorciatoia da tastiera Command + R per Mac (F5 per Windows). Quindi, seleziona la scheda Rete, dove puoi vedere tutte le risposte alle richieste del tuo browser.
Il codice di ogni risposta può essere visto nella colonna Stato. Cliccando su qualsiasi risposta, vedrai informazioni dettagliate sulla richiesta originale, il codice di stato e le intestazioni della risposta.
Controlla i codici di stato da Google Search Console
Come proprietario di un sito web, mantenere un buon posizionamento SEO è cruciale per il tuo business online. Gli errori HTTP possono impedire a Google di indicizzare il tuo sito web, perdendo quindi molto traffico potenziale. Ecco perché Google Search Console è estremamente utile per identificare tali errori in modo da poterli correggere in modo tempestivo.
In primo luogo, è necessario aggiungere il tuo sito web come nuova proprietà nella Google Search Console. Questo crea un pannello in cui è possibile monitorare varie statistiche per il proprio sito web.
I codici HTTP registrati da Google possono essere monitorati nella sezione Indice > Pagine > Perché le pagine non sono indicizzate.
Sotto la colonna Ragione, vedrai una breve descrizione dell’errore. Ad esempio, un errore 404 verrà elencato come Non trovata (404) e un errore 500 o 5XX verrà contrassegnato come Errore del server (5XX). I reindirizzamenti con codici 3XX verranno registrati come Pagina con reindirizzamento.
Puoi anche vedere se l’errore deriva da Google o dal sito web stesso nella colonna Sorgente.
Riepilogo
Ci sono molti codici HTTP e ognuno ha un significato diverso. Non è necessario ricordarli tutti, ma è importante sapere che sono risposte dal server del sito web alle richieste del browser. Alcuni di essi sono informativi e non li vedrai nel tuo browser. Dovresti prestare particolare attenzione agli errori 4XX (lato client) e 5XX (lato server) in quanto sono critici per il traffico del tuo sito web e di solito impediscono agli utenti di visitare un sito web.
Questa guida ha esaminato tutti i codici di risposta HTTP ufficiali e alcuni non ufficiali utilizzati in piattaforme specifiche. Speriamo sia stata utile!