I codici di stato HTTP sono come brevi note di un server che vengono inserite in una pagina web. In realtà non fanno parte del contenuto del sito. Si tratta invece di messaggi provenienti dal server che vi dicono come sono andate le cose quando ha ricevuto la richiesta di visualizzare una certa pagina.
Questi messaggi vengono restituiti ogni volta che il vostro browser interagisce con un server, anche se non li vedete. Se siete il proprietario o lo sviluppatore di un sito web, la comprensione dei codici di stato HTTP è fondamentale. Quando compaiono, i codici di stato HTTP sono uno strumento inestimabile per la diagnosi e la correzione degli errori di configurazione del sito.
Questo articolo presenta diversi codici di stato e di errore del server e spiega cosa rivelano su ciò che accade dietro le quinte sul server.
Cominciamo!
Preferite guardare la versione video?
Cosa Sono i Codici di Stato HTTP?
Ogni volta che fate clic su un link o digitate un URL e premete Invio, il vostro browser invia una richiesta al server web per il sito a cui state cercando di accedere. Il server riceve ed elabora la richiesta, quindi invia le relative risorse insieme ad un header HTTP.
I codici di stato HTTP vengono consegnati al browser nell’intestazione HTTP. Sebbene i codici di stato vengono restituiti ogni volta che il vostro browser richiede una pagina web o una risorsa, il più delle volte non li vedete.
Normalmente ne potreste vedere uno nel vostro browser solo quando qualcosa va storto. Questo è il modo di dire del server: “C’è qualcosa che non va. Ecco un codice che spiega cosa è successo”.
Se volete vedere i codici di stato che il vostro browser normalmente non vi mostra, avete diversi strumenti che ve lo permettono. Per piattaforme di sviluppo come Chrome e Firefox sono disponibili estensioni del browser, e ci sono molti strumenti di header fetching “web-based” come Web Sniffer.
Per vedere i codici di stato HTTP con uno di questi strumenti, cercate la riga che appare in cima al report che dice “Status: HTTP/1.1”. Seguirà il codice di stato che è stato restituito dal server.
Comprendere le Classi dei Codici di Stato HTTP
I codici di stato HTTP sono suddivisi in 5 “classi”. Si tratta di raggruppamenti di risposte che hanno significati simili o correlati. Sapere cosa sono può aiutarvi a determinare rapidamente la sostanza generale di un codice di stato prima di andare a cercare il suo significato specifico.
Le cinque classi sono:
- 100: i codici informativi indicano che la richiesta avviata dal browser sta continuando.
- 200: i codici di successo restituiti quando la richiesta del browser è stata ricevuta, compresa ed elaborata dal server.
- 300: I codici di reindirizzamento vengono restituiti quando una nuova risorsa sostituisce la risorsa richiesta.
- 400: codici di errore del client che indicano che c’è stato un problema con la richiesta.
- 500: codici di errore del server che indicano che la richiesta è stata accettata, ma che un errore sul server ha impedito il completamento della richiesta.
All’interno di ciascuna di queste classi, esistono diversi codici che possono essere restituiti dal server. Ogni singolo codice ha un significato specifico e unico, che tratteremo nell’elenco più completo che segue.
Perché i Codici di Stato HTTP e gli Errori Sono Importanti per l’Ottimizzazione dei Motori di Ricerca (SEO)
I bot dei motori di ricerca vedono i codici di stato HTTP mentre effettuano il crawling del vostro sito. In alcuni casi, questi messaggi possono possono determinare se e come vengono indicizzate le vostre pagine, così come il modo in cui i motori di ricerca percepiscono la salute del vostro sito.
In generale, i codici di stato HTTP di livello 100 e 200 non avranno un grande impatto sulla vostra SEO. Segnalano che sul vostro sito tutto funziona come dovrebbe, e permettono ai bot dei motori di ricerca di continuare il loro lavoro. Tuttavia, non miglioreranno nemmeno il vostro ranking.
Per la maggior parte, sono i codici di livello superiore che contano per la SEO. Le risposte di livello 400 e 500 possono impedire ai bot di effettuare il crawling e indicizzare le vostre pagine. Un numero eccessivo di questi errori può anche indicare che il vostro sito non è di buona qualità, eventualmente abbassando il vostro ranking.
I codici di livello 300 hanno un rapporto un po’ più complicato con la SEO. La cosa principale da sapere per capire che impatto hanno è la differenza tra redirect permanenti e temporanei, cosa che tratteremo più dettagliatamente nella relativa sezione più avanti.
In poche parole, però, i redirect permanenti condividono la qualità dei link dai backlink, ma quelli temporanei no. In altre parole, quando si utilizzano redirect temporanei per le pagine spostate, si perde il vantaggio SEO di tutto il link building che si è fatto.
Controllare i Codici di Stato HTTP nella Console di Ricerca di Google
Un modo per monitorare il modo in cui Google percepisce i codici di stato HTTP sul vostro sito è quello di utilizzare la Google Search Console. È possibile visualizzare i codici di stato di livello 300, 400 e 500 nel report Coverage:
Quest’area del vostro cruscotto mostra quattro tipi di contenuti del vostro sito:
- Pagine che restituiscono errori.
- Pagine valide che hanno delle avvertenze.
- Risorse valide.
- Contenuto escluso dall’indice.
È possibile trovare pagine con codici di stato HTTP di livello 300-, 400- e 500 sotto le sezioni Excluded, Error o Valid with warnings, a seconda del tipo di codice. Ad esempio, i redirect 301 possono essere elencati sotto Excluded come Page with redirect:
I codici di stato dei livelli 400 e 500 saranno probabilmente visualizzati sotto la voce Error.
Un altro modo per visualizzare i codici di stato HTTP è quello di utilizzare lo strumento URL Inspection. Se Google non è in grado di indicizzare una pagina specifica per via di un errore, lo vedrete qui:
Per altri suggerimenti sull’utilizzo di Google Search Console, consultate la nostra guida completa alla piattaforma.
Guida Completa ed Elenco di Codici di Stato HTTP
Anche se ci sono più di 40 diversi codici di stato del server, probabilmente ne incontrerete di norma meno di una dozzina. Di seguito, descriviamo i più comuni, oltre ad alcuni dei codici più oscuri che si possono incontrare.
Codici di Stato 100
Un codice di stato di livello 100 vi dice che la richiesta che avete fatto al server è ancora in corso per qualche motivo. Non è necessariamente un problema, sono solo informazioni extra per farvi sapere cosa sta succedendo.
- 100: “Continue”. Ciò significa che il server in questione ha ricevuto gli header della richiesta del vostro browser ed è ora pronto per l’invio anche del body della richiesta. Ciò rende il processo di richiesta più efficiente, perché impedisce al browser di inviare la richiesta del body anche se le intestazioni sono state rifiutate.
- 101: “Switching protocols”. Il vostro browser ha chiesto al server di cambiare i protocolli, e il server si è conformato.
- 103: “Early hints”. Questo restituisce alcuni header di risposta prima che il resto della risposta del server sia pronto.
Codici di Stato 200
Questo è il miglior tipo di codice di stato HTTP che possiate ricevere. Una risposta di livello 200 significa che tutto funziona esattamente come dovrebbe.
- 200: “Everything is OK”. Questo è il codice che viene consegnato quando una pagina web o una risorsa si comporta esattamente come ci si aspetta.
- 201: “Created”. Il server ha soddisfatto la richiesta del browser e, di conseguenza, ha creato una nuova risorsa.
- 202: “Accepted”. Il server ha accettato la richiesta del vostro browser ma la sta ancora elaborando. In ultima analisi, la richiesta può portare o meno ad una risposta completa.
- 203: “Non-Authoritative Information”. Questo codice di stato può apparire quando un proxy è in uso. Significa che il server proxy ha ricevuto un codice di stato di 200 “Everything is OK” dal server di origine, ma ha modificato la risposta prima di trasmetterla al browser.
- 204: “No Content”. Questo codice significa che il server ha elaborato la richiesta con successo, ma non restituirà alcun contenuto.
- 205: “Reset Content”. Come un codice 204, questo significa che il server ha elaborato la richiesta ma non restituirà alcun contenuto. Tuttavia, richiede anche che il browser reimposti la visualizzazione del documento.
- 206: “Partial Content”. Potete vedere questo codice di stato se il vostro client HTTP (il vostro browser) utilizza ‘range header’. Ciò consente al browser di riprendere i download in pausa e di suddividere un download in più flussi. Un codice 206 viene inviato quando un range header fa sì che il server invii solo una parte della risorsa richiesta.
Codici di Stato 300
Il reindirizzamento è la procedura utilizzata per comunicare che una risorsa è stata spostata in una nuova location. Ci sono diversi codici di stato HTTP che accompagnano i redirect, al fine di fornire ai visitatori informazioni su dove trovare il contenuto che stanno cercando.
- 300: “Multiple Choices”. A volte, ci possono essere più risorse con cui il server può rispondere per soddisfare la richiesta del vostro browser. Un codice di stato 300 significa che il vostro browser deve ora scegliere tra queste. Questo può accadere quando ci sono più estensioni di tipi di file a disposizione, o se il server sta sperimentando la disambiguazione del senso delle parole.
- 301: “The requested resource has been moved permanently”. Questo codice viene consegnato quando una pagina web o una risorsa è stata sostituita in modo permanente con una risorsa diversa. Viene utilizzato per il redirect permanente degli URL.
- 302: “The requested resource has moved, but was found“. Questo codice viene utilizzato per indicare che la risorsa richiesta è stata trovata, ma non nel luogo previsto. Viene utilizzato per il reindirizzamento temporaneo degli URL.
- 303: “See Other”. Per comprendere un codice di stato 303 è necessario conoscere la differenza tra i quattro metodi di richiesta HTTP primari. In sostanza, un codice 303 indica al vostro browser che ha trovato la risorsa richiesta proveniente dal browser tramite POST, PUT o DELETE. Tuttavia, per recuperarlo utilizzando GET, è necessario effettuare la richiesta appropriata a un URL diverso da quello utilizzato in precedenza.
- 304: “The requested resource has not been modified since the last time you accessed it“. Questo codice indica al browser che le risorse memorizzate nella cache del browser non sono cambiate. Viene utilizzato per velocizzare la consegna delle pagine web riutilizzando le risorse precedentemente scaricate.
- 307: “Temporary Redirect“. Questo codice di stato ha sostituito il 302 “Found” come azione appropriata quando una risorsa è stata temporaneamente spostata in un URL diverso. A differenza del codice di stato 302, non permette di cambiare il metodo HTTP.
- 308: “Permanent Redirect”. Il codice di stato 308 è il successore del codice 301 “Moved Permanently”. Non consente di modificare il metodo HTTP e indica che la risorsa richiesta si trova ora permanentemente in un nuovo URL.
400 Codici di stato
A livello 400, i codici di stato HTTP iniziano a diventare problematici. Si tratta di codici di errore che specificano che c’è un errore nel browser e/o nella richiesta.
- 400: “Bad Request”. Il server non può restituire una risposta a causa di un errore del client. Consultate la nostra guida per eliminare questo errore.
- 401: “Unauthorized” o “Authorization Required”. Questo viene restituito dal server quando la risorsa di destinazione manca di credenziali di autenticazione valide. Potreste vederlo se avete impostato l’autenticazione HTTP di base usando htpasswd.
- 402: “Payment Required”. Originariamente, questo codice era stato creato per essere utilizzato come parte di un sistema di cash digitale. Tuttavia, quel piano non è mai andato in porto. Invece, viene utilizzato da diverse piattaforme per indicare che una richiesta non può essere soddisfatta, di solito a causa della mancanza di fondi necessari. I casi più comuni includono:
- Avete raggiunto il vostro limite di richieste giornaliere per le API di Google Developers.
- Non avete pagato le spese di Shopify e il vostro negozio è stato temporaneamente disattivato.
- Il vostro pagamento tramite Stripe è fallito, o Stripe sta cercando di prevenire un pagamento fraudolento.
- 403: “Access to that resource is forbidden”. Questo codice viene restituito quando un utente tenta di accedere a qualcosa che non ha il permesso di visualizzare. Ad esempio, cercare di raggiungere contenuti protetti da password senza effettuare il login potrebbe produrre un errore 403.
- 404: “The requested resource was not found”. Questo è il messaggio di errore più comune di tutti. Questo codice significa che la risorsa richiesta non esiste e il server non sa se è mai esistita.
- 405: “Method not allowed“. Questo viene generato quando il server di hosting (server di origine) supporta il metodo ricevuto, ma la risorsa di destinazione no.
- 406: “Not acceptable response“. La risorsa richiesta è in grado di generare solo contenuti non accettabili secondo le intestazioni di accettazione inviate nella richiesta.
- 407: “Proxy Authentication Required”. Un server proxy è in uso e richiede al vostro browser di autenticarsi prima di continuare.
- 408: “The server timed out waiting for the rest of the request from the browser”. Questo codice viene generato quando un server va in time out in attesa della richiesta completa da parte del browser. In altre parole, il server non ha ricevuto la richiesta completa inviata dal browser. Una possibile causa potrebbe essere la congestione della rete con conseguente perdita di pacchetti di dati tra il browser e il server.
- 409: “Conflict”. Un codice di stato 409 significa che il server non è in grado di elaborare la richiesta del vostro browser perché c’è un conflitto con la risorsa in questione. Questo a volte avviene a causa di più modifiche simultanee.
- 410: “The requested resource is gone and won’t be coming back”. Questo è simile a un codice 404 “Not Found”, tranne per il fatto che un 410 indica che la condizione è prevista e permanente.
- 411: “Length Required”. Ciò significa che la risorsa richiesta richiede che il client specifichi una certa lunghezza e che non l’ha fatto.
- 412: “Precondition Failed”. Il vostro browser ha incluso alcune condizioni nelle sue intestazioni di richiesta e il server non ha soddisfatto tali specifiche.
- 413: “Payload Too Large” o “Request Entity Too Large“. La vostra richiesta è più grande di quanto il server sia disposto o in grado di elaborare.
- 414: “URI Too Long“. Questo è di solito il risultato di una richiesta GET che è stata codificata come una query string troppo grande per essere elaborata dal server.
- 415: “Unsupported Media Type”. La richiesta include un tipo di supporto che il server o la risorsa non supporta.
- 416: “Range Not Satisfiable”. La vostra richiesta era per una parte di una risorsa che il server non è in grado di restituire.
- 417: “Expectation Failed”. Il server non è in grado di soddisfare i requisiti specificati nel campo di intestazione della richiesta.
- 418: “I’m a teapot”. Questo codice viene restituito dalle teiere che ricevono la richiesta di preparare il caffè. È anche un pesce d’aprile del 1998.
- 422: “Unprocessable Entity“. La richiesta del client contiene errori semantici e il server non può elaborarla.
- 425: “Too Early”. Questo codice viene inviato quando il server non è disposto ad elaborare una richiesta perché potrebbe essere ritrasmessa.
- 426: “Upgrade Required”. A causa del contenuto del campo upgrade header, il client dovrebbe passare a un protocollo diverso.
- 428: “Precondition Required”. Il server richiede che le condizioni siano specificate prima di elaborare la richiesta.
- 429: “Too many requests”. Questo viene generato dal server quando l’utente ha inviato troppe richieste in un determinato lasso di tempo (rate-limiting). Questo a volte può accadere a causa di bot o di script che tentano di accedere al vostro sito. In questo caso, potreste provare a modificare il vostro URL di accesso a WordPress. Potete anche consultare la nostra guida per la correzione di un errore 429 “Too many requests”.
- 431: “Request Header Fields Too Large“. Il server non può elaborare la richiesta perché i campi dell’intestazione sono troppo grandi. Questo può indicare la presenza di un problema con un singolo campo di intestazione, o tutti insieme.
- 451: “Unavailable for Legal Reasons“. Il gestore del server ha ricevuto la richiesta di vietare l’accesso alla risorsa da voi richiesta (o a un insieme di risorse, compresa quella da voi richiesta). Curiosità: questo codice è un riferimento al romanzo di Ray Bradbury Fahrenheit 451.
- 499: “Client closed request”. Questo viene restituito da NGINX quando il cliente chiude la richiesta mentre Nginx la sta ancora elaborando.
Codici di Stato 500
Anche i codici di stato di livello 500 sono considerati errori. Tuttavia, questi codici indicano che il problema è dalla parte del server. Questo può renderli più difficili da rimuovere.
- 500: “There was an error on the server and the request could not be completed”. Si tratta di un codice generico che significa semplicemente “errore interno del server”. Qualcosa è andato storto sul server e la risorsa richiesta non è stata consegnata. Questo codice è tipicamente generato da plugin di terze parti, da PHP difettoso, o anche dalla interruzione della connessione al database. Date un’occhiata ai nostri tutorial su Come Risolvere l’Errore Nello Stabilire Una Connessione al Database e altri modi per risolvere un errore interno del server 500.
- 501: “Not Implemented”. Questo errore indica che il server non supporta le funzionalità necessarie per soddisfare la richiesta. È quasi sempre un problema dello stesso server web, e di solito deve essere risolto dall’host. Leggete anche i nostri consigli su come risolvere un errore 501 not implemented.
- 502: “Bad Gateway”. Questo codice di errore significa normalmente che un server ha ricevuto una risposta non valida da un altro, ad esempio quando è in uso un server proxy. Altre volte una query o una richiesta richiede troppo tempo, e quindi viene annullata o uccisa dal server e la connessione al database si interrompe. Per maggiori dettagli, consultate il nostro tutorial approfondito su come correggere l’errore 502 Bad Gateway.
- 503: “The server is unavailable to handle this request right now”. La richiesta non può essere completata in questo momento. Questo codice può essere restituito da un server sovraccarico che non è in grado di gestire ulteriori richieste. Abbiamo una guida completa per correggere l’errore 503 Service Unavailable.
- 504: “The server, acting as a gateway, timed out waiting for another server to respond”. Questo è il codice restituito quando ci sono due server coinvolti nell’elaborazione di una richiesta, e il primo server si interrompe in attesa della risposta del secondo server. Potete leggere di più su come correggere gli errori 504 nella nostra guida dedicata.
- 505: ““HTTP Version Not Supported”. Il server non supporta la versione HTTP utilizzata dal client per effettuare la richiesta.
- 508: “Resource Limit Is Reached” significa che sono stati raggiunti i limiti delle risorse impostati dal vostro host web. Guardate il nostro tutorial su come risolvere l’errore “508 Resource Limit Is Reached“.
- 509: “Bandwidth Limit Exceeded” significa che il vostro sito web sta usando una larghezza di banda superiore a quella consentita dal vostro provider di hosting.
- 511: “Network Authentication Required”. Questo codice di stato viene inviato quando la rete che si sta cercando di utilizzare richiede una qualche forma di autenticazione prima di inviare la richiesta al server. Ad esempio, potrebbe essere necessario accettare i Termini e Condizioni di un hotspot Wi-Fi pubblico.
- 521: “Web server is down”. L’errore 521 è un messaggio di errore specifico di Cloudflare. Significa che il vostro browser web è stato in grado di connettersi con successo a Cloudflare, ma Cloudflare non è stato in grado di connettersi al server web di origine.
- 525: “SSL Handshake Failed”. L’errore 525 significa che l’handshake SSL tra un dominio che utilizza Cloudflare e il server web di origine è fallita. Se state riscontrando problemi ci sono cinque metodi con cui potete provare a risolvere facilmente l’errore 525.
Dove Imparare di Più Sui Codici di Stato HTTP
Oltre ai codici di stato HTTP di cui abbiamo parlato in questo elenco, ce ne sono altri più oscuri cui potreste essere interessati. Ci sono diverse risorse che potete consultare per questi codici più rari, tra cui:
- Questo elenco completo dei codici di stato HTTP di Wikipedia.
- Definizioni dei codici di stato della Internet Engineering Task Force (IETF).
- RFC 7231.
Conoscere questi codici di stato può aiutarvi a risolvere alcuni problemi particolari che potrebbero presentarsi durante la gestione del vostro sito web, o anche quando li incontrate su altri siti.
Riepilogo
Anche se possono sembrare all’apparenza complessi e intimidatori, i codici di stato HTTP sono in realtà molto informativi. Imparando il significato dei più comuni, potrete risolvere più rapidamente i problemi che si verificano sul vostro sito.
In questo post abbiamo definito oltre 40 codici di stato HTTP in cui potreste imbattervi. Dai più semplici codici di livello 100 e 200 ai più complessi errori di livello 400 e 500, interpretare questi messaggi è fondamentale per mantenere il vostro sito web e essere certi che sia accessibile agli utenti.
Lascia un commento