15Giu

In SEO

0

Status Code: cosa sono gli status code e come leggerli

tutti gli status code del web

Quante volte ti sarà capitato di navigare sul web e di trovare un errore 404 che ti informa che la pagina non è più disponibile?

Il tipico errore 404 è solo uno dei tantissimi status code che si possono trovare sul web e in questo articolo ti spiegherò il significato di ognuno di essi affinchè tu possa intervenire al momento opportuno e con la giusta strategia.

Ogni bravo SEO per definirsi tale deve considerare gli status code come parte integrante del proprio lavoro motivo per cui sempre più aziende ne richiedono la conoscenza come requisito fondamentale.

Ma cosa sono esattamente gli Status Code ovvero i codici di stato?

Il web funziona a richieste tra un client ed un server ed ogni qualvolta utilizziamo un browser per navigare, non facciamo altro che interrogare il server, che risponde con la pagina html o il file richiesto.

Ovviamente questo non è tutto: quando un server fornisce gli elementi che gli sono stati richiesti, allega anche una serie di informazioni all’interno di una cosiddetta intestazione HTTP ovvero l’HTTP Header (non ti stresserò con le informazioni che sono contenute in un http header perché semplicemente sono di scarsissima consultazione che tradotto significa che se fai SEO non ti serviranno mai… o quasi).

tutti gli status code del web

Come puoi vedere in questa immagine, gli status code sono davvero tanti ed ora cercherò di analizzarli più nel dettaglio affinché possano esserti chiari e soprattutto di supporto per risolvere i tuoi problemi sul web.

Innanzitutto gli status code sono raggruppabili in 5 differenti classi:

 

Status Code 1xx Informational responses

Gli status code della classe 1xx ovvero le Informational responses indicano che la richiesta è stata ricevuta e compresa provvisoriamente dal server, ma l’utente che sta navigando sul web deve continuare ad attendere una risposta definitiva. Ecco gli status code che fanno parte di questa classe:

Status code 100 Continue
Il server ha ricevuto le intestazioni delle richieste e il client deve procedere all’invio del corpo della richiesta (questo accade in genere nelle richiesta di tipo POST).

Status code 101 Switching Protocols
Il richiedente ha chiesto al server di cambiare i protocolli e il server ha accettato di farlo perché è a conoscenza di ciò delle motivazioni per cui è stato richiesto tale cambio.

Status code 102 Processing (WebDAV; RFC 2518)
Questo status code è molto utile in quanto fa si che il client non vada in timeout mentre attende una risposta da parte del server. Esistono moltissime risorse sul web che per essere caricate interamente hanno bisogno di elaborare un’enormità di dati e proprio grazie a questo status code si impedisce al client di presupporre che la richiesta sia stata persa.

Status code 103 Early Hints (RFC 8297)
E’ utilizzato con lo scopo di restituire le intestazioni di risposta prima che il messaggio HTTP finale venga interamente caricato.

Status Code 2xx Success

Dopo aver compreso bene la classe 1xx degli status code, ti spiego di seguito la nuova classe 2xx che indicano che l’azione richiesta dal client è stata ricevuta, compresa e accettata.

Status code 200 OK
Lo status code 200 è la risposta base che si genera per richieste HTTP riuscite.

Status code 201 Created
La richiesta è stata soddisfatta e viene restituita la creazione di una nuova risorsa.

Status code 202 Accepted
La richiesta è stata accettata ma è incompleta.

Status code 203 Non-Authoritative Information (since HTTP/1.1)
Il server è un proxy di trasformazione (ed esempio un web accelerator) che ha ricevuto uno status code 200 OK dalla sua origine, ma sta restituendo una versione modificata della risposta dell’origine.

Status code 204 No Content
Nonostante il server abbia elaborato correttamente la richiesta fatta dal client, non restituirà alcun contenuto.

Status code 205 Reset Content
Questo status code è perfettamente identico al 204 ma con la sola differenza che in caso di status code 205, il richiedente resetti la vista del documento.

Status code 206 Partial Content (RFC 7233)
Il server sta consegnando solo alcune parti della risorsa a causa del range di un header inviato dal client. L’header di intervallo viene utilizzato dai client HTTP per consentire la ripresa di un download interrotto o per suddividere un download ad esempio in più flussi simultanei.

Status code 207 Multi-Status (WebDAV; RFC 4918)
Quando vengono richieste risorse XML, allora il corpo del messaggio può contenere un numero di codici di risposta separati, dipendentemente dal numero di richieste secondarie che sono state fatte.

Status code 208 Already Reported (WebDAV; RFC 5842)
I membri di un binding DAV non vengono inclusi di nuovo perché sono già stati enumerati in una parte precedente della risposta (multistatus).

Status code 226 IM Used (RFC 3229)
Il server ha soddisfatto una richiesta del client e la risposta è una rappresentazione del risultato di una o più manipolazioni di istanze applicate all’istanza corrente.

Status Code 3xx Redirection

Questa classe di codici di stato indica che il client deve intraprendere ulteriori azioni per completare la richiesta. Molti di questi status code sono utilizzati nel redirect degli URL.

Status code 300 Multiple Choices
Un client può scegliere tra più opzioni per soddisfare una specifica richiesta. Ad esempio, questo status code viene utilizzato quando esistono più opzioni di formati video, ovvero uno stesso video ma con estensioni diverse o viene utilizzato per suggerire una disambiguazione del senso delle parole.

Status code 301 Moved Permanently
La risorsa che è stata richiesta non esiste più perché è stata spostata permanentemente da un’altra parte, pertanto questa e tutte le richieste che perverrano in future dovranno essere reindirizzate all’URI indicato.

Status code 302 Found
Sebbene questo status code sia il più utilizzato, di fatto va in contraddizione con lo standard. In passato veniva utilizzato per redirect temporanei ma oggi è stato rimpiazzato dagli status code 303 e 307 per distinguere due differenti comportamenti. Oggi lo status code 303 viene usato soltanto da alcune applicazioni web e da alcuni framework.

Status code 303 See Other (since HTTP/1.1)
Redirect momentaneo della risorsa richiesta che può essere ritrovata usando il metodo GET.

Status code 304 Not Modified (RFC 7232)
Indica che la risorsa non è stata modificata dalla versione specificata dalle intestazioni della richiesta If-Modified-Since o If-None-Match pertanto non dev’essere nuovamente trasmessa dal server in quanto una copia è stata già precedentemente scaricata.

Status code 305 Use Proxy (since HTTP/1.1)
La risorsa richiesta è disponibile solo attraverso un proxy, ma questo status code non funziona bene con Mozilla e Internet Explorer per motivi legati alla sicurezza.

Status code 306 Switch Proxy
E’ uno status code in disuso, ma in era utilizzato per definire: “Le richieste successive devono utilizzare il proxy specificato.”

Status code 307 Temporary Redirect (since HTTP/1.1)
Redirect momentaneo della risorsa richiesta che può essere ritrovata usando il metodo POST.

Status code 308 Permanent Redirect (RFC 7538)
Tutte le richieste attuali e future devono essere ripetute utilizzando un altro URI. Gli status code 307 e 308 hanno un comportamento molto simile e parallelo ai codici di stato 302 e 301, ma non consentono il cambio del metodo http quindi ad esempio, l’invio di un modulo a una risorsa reindirizzata in modo permanente può continuare senza problemi.

Status Code 4xx Client errors

Questa classe di codici di stato la si può associare maggiormente agli errori causati dal client. Ogni qualvolta si verifica un errore di questa classe, il server includere anche un dettaglio che spiega l’errore e specifica se si tratta di una condizione temporanea o permanente. Ecco gli status code di questa classe:

Status code 400 Bad Request
Si è verificato un errore del client e il server non riesce ad elabora la richiesta. In genere questo status code di verifica quando si verifica un errore di sintassi non valida oppure la dimensione della richiesta è troppo grande o quando un frammento del messaggio richiesto non è valido, ecc…

Status code 401 Unauthorized (RFC 7235)
Questo status code è molto simile allo status code 403 Forbidden, ma è più specifico per casi in cui l’autenticazione è possibile, ma al momento è fallita o non può essere fornita. Non è raro trovare siti web che impostano uno status code 401 per indirizzi IP specifici che desiderano “bannare”.

Status code 402 Payment Required
Ad oggi questo status code non è mai stato utilizzato e si pensa che lo potrà essere in futuro per transazioni digitali o micro-pagamenti.

Status code 403 Forbidden
Anche se la richiesta è valida, il server rifiuta si completare l’azione perché l’utente potrebbe non avere le autorizzazioni necessarie.

Status code 404 Not Found
Questo status code, come accennavo all’inizio di questo articolo è il più diffuso sul web. Migliaia se non milioni di siti web si ritrovano con errori 404 non gestiti. Questo status code indica che la risorsa richiesta non è stata trovata ma potrebbe essere disponibile quanto prima.

Status code 405 Method Not Allowed
La richiesta è stata fatta con un metodo non consentito. Basti pensare che generare questo status code è moto semplice quando in un form di contatti vengono inviati dati con un metodo GET ed invece il client si aspetta di riceverli con un metodo POST.

Status code 406 Not Acceptable
La risorsa richiesta è in grado di generare solo contenuti non accettabili in base alle intestazioni Accept inviate nella richiesta.

Status code 407 Proxy Authentication Required (RFC 7235)
Questo status code si verifica quando un server è in attesa di ricevere la richiesta ma il client deve prima autenticarsi con il proxy, ma nel frattempo il tempo di attesa si esaurisce.

Status code 408 Request Timeout
Il server è andato in timeout mentre attendeva la richiesta e la connessione si è interrotta.

Status code 409 Conflict
Si stanno verificando conflitti con la risorsa richiesta e il server non può completare l’operazione. Questo status code viene mostrato quando il server è certo che l’utente possa risolvere manualmente il problema pertanto mostra anche molti dettagli che possono portare alla soluzione.
Il tipico caso di Status code 409 si verifica quando su un sito web partono diversi aggiornamenti contemporaneamente.

Status code 410 Gone
Indica che la risorsa richiesta non è e non sarà mai più disponibile. In genere io lo uso nella gestione degli e-commerce dei miei clienti quando mi informano che determinati prodotti sono usciti fuori produzione e non dovranno essere sostituiti con nessun altro.
Impostando uno status code 410 i motori di ricerca eliminano le pagine dai propri indici e si migliora così l’esperienza utente.

Status code 411 Length Required
Questo codice di stato si genera quando la richiesta non contiene la lunghezza del suo contenuto che però di fatto è fondamentale per la risorsa richiesta.

Status code 412 Precondition Failed (RFC 7232)
Il server non riesce a soddisfare una delle condizioni preliminari che il richiedente ha inserito nella richiesta.

Status code 413 Request Entity Too Large
La richiesta è di dimensioni troppo grandi rispetto a quanto il server riesca ad elaborare. E’ facile oggi trovare questo status code con il nome “Status code 413 Payload Too Large”.

Status code 414 Request-URI Too Long
L’URI inviato è troppo lungo e il server non riesce ad elaborarlo. Molto spesso questo status code si genera quando la stringa viene inviata con un metodo GET, che di fatto però può gestire fino a 255 caratteri, pertanto per risolvere il problema  basta convertire la richiesta in POST. Questo codice di stato lo si trova facilmente sul web anche con il nome “Status code 414 URI Too Long (RFC 7231)”.

Status code 415 Unsupported Media Type
L’entità richiesta ha un formato di media che il server o la risorsa non supportano. Ad esempio, il client cerca di caricare un’immagine come image/svg+xml, ma il server necessita invece di un formato differente.

Status code 416 Range Not Satisfiable (RFC 7233)
Non mi sono mai imbattuto in questa casistica, ma si verifica quando il client richiede una porzione del file (byte serving), ma il server non riesce a fornire quell’esatta porzione.

Status code 417 Expectation Failed
Il server non può soddisfare i requisiti del campo di intestazione della richiesta Expect.

Status code 418 I’m a teapot (RFC 2324, RFC 7168)
E’ rarissimo incontrare questo status code è non è prevista l’implementazione da parte dei server http. Quasi alla pari di uno scherzo, questo status code può essere paragonato agli Easter Egg di Google. Se non ne hai mai visto uno ti consiglio di dare un’occhiata a questo link: Google gravity.

Status code 421 Misdirected Request (RFC 7540)
La richiesta è stata indirizzata a un server che non è in grado di produrre una risposta.

Status code 422 Unprocessable Entity (WebDAV; RFC 4918)
Nonostante la richiesta fosse formata in modo corretto, non è possibile seguirla perché contiene errori semantici.

Status code 423 Locked (WebDAV; RFC 4918)
Semplicemente la risorsa a cui si accede risulta bloccata.

Status code 424 Failed Dependency (WebDAV; RFC 4918)
La richiesta non è riuscita perché legata ad un’altra richiesta e anche l’altra richiesta non è riuscita. Ne è un esempio il metodo PROPPATCH.

Status code 426 Upgrade Required
Il client deve switchare a un protocollo diverso come ad esempio il TLS/1.0, indicato nel campo dell’intestazione dell’aggiornamento.

Status code 428 Precondition Required (RFC 6585)
Questo status code serve a prevenire i conflitti tra le richieste pertanto le richieste vengono condizionate.

Status code 429 Too Many Requests (RFC 6585)
Quando un utente invia troppe richieste in un dato periodo di tempo viene mostrato lo status code 429.

Status code 431 Request Header Fields Too Large (RFC 6585)
Quando uno o tutti i campi dell’HTTP Header sono troppo grandi allora il server non è disposto a elaborare la richiesta.

Status code 451 Unavailable For Legal Reasons (RFC 7725)
Il nome stesso parla da solo. Quando esistono ragioni legali, il proprietario del web server può negare l’accesso a una o più risorse.

Status Code 5xx Server errors

Anche la classe degli status code 5xx è tra i classici del web e indicano errori in cui il server non riesce a soddisfare una richiesta anche se appare valida.

Status code 500 Internal Server Error
Ecco lo status code più generico del web, non contiene dettagli ma si sa soltanto che si è creata una condizione imprevista pertanto non è possibile completare la richiesta.

Status code 501 Not Implemented
Il server non riesce a riconoscere il metodo con cui proviene la richiesta pertanto non riesce a soddisfarla. Non è una condizione permanente e ci sono possibilità che in futuro la richiesta possa essere soddisfatta.

Status code 502 Bad Gateway
Il server sta svolgendo le stesse funzioni di un gateway o di un proxy, ma ha ricevuto una risposta non valida dal server upstream.

Status code 503 Service Unavailable
Un altro dei classici status code del web che si verifica quando il server non è al momento disponibile e le ragioni possono esser differenti: potrebbe essere sovraccarico o in uno stato momentaneo di inattività a causa di manutenzioni. Come per lo status code 501, anche questo codice di stato non è una condizione permanente e in futuro le richieste torneranno ad essere soddisfatte.

Status code 504 Gateway Timeout
A differenza dallo status code 502, quando si verifica un codice 504 significa che il server stava svolgendo le stesse funzioni di un gateway o di un proxy, ma il server upstream non ha inviato tempestivamente una risposta per la richiesta fatta.

Status code 505 HTTP Version Not Supported
Il server non accetta richieste fatte con la versione HTTP (HyperText Transfer Protocol) utilizzata.

Status code 506 Variant Also Negotiates (RFC 2295)
Uno status code abbastanza raro che si genera quando il server ha un errore di configurazione interno, nello specifico quando la negoziazione per la richiesta genera un riferimento circolare.

Status code 507 Insufficient Storage (WebDAV; RFC 4918)
Il server non riesce a memorizzare la rappresentazione necessaria per completare la richiesta.

Status code 508 Loop Detected (WebDAV; RFC 5842)
Il server sta rilevando un ciclo infinito (loop) durante l’elaborazione della richiesta.

Status code 510 Not Extended (RFC 2774)
Per essere soddisfatto, il server ha bisogno di ulteriori estensioni della richiesta.

Status code 511 Network Authentication Required (RFC 6585)
Il client deve ottenere l’autenticazione per poter accedere alla rete.

Status code non ufficiali

Gli status code che seguono non sono specificati in nessuno standard.

Status code 103 Checkpoint
Questo codice di stato è usato nelle proposte di richieste ripristinabili quando le richieste PUT o POST si interrompono.

Status code 420 Method Failure (Spring Framework)
Non rientra negli standard HTTP ma il framework Spring lo utilizzava quando un metodo falliva. Oggi è stato deprecato e non è più possibile incontrare questo Status code.

Status code 420 Enhance Your Calm (Twitter)
Questo è un vecchio codice ormai in disuso perché sostituito dallo Status Code 429. Si verificava ad esempio quando il client aveva un utilizzo di richieste limitate ed era un problema noto con la versione 1 di Twitter Search o quando ci si collegava alle API di G. Trends.

Status code 450 Blocked by Windows Parental Controls (Microsoft)
Il più classico degli status code non ufficiali che viene mostrato quando viene attivato il parental control e questo blocca l’accesso ad una pagina web.

Status code 498 Invalid Token (Esri)
Il codice 498 indica un token scaduto o non valido ed è principalmente utilizzato dai server di ArcGIS.

Status code 499 Token Required (Esri)
Come per il codice 498, lo status code 499 è tipico dei server di ArcGIS ed indica che un token è richiesto ma non è stato inviato.

Status code 509 Bandwidth Limit Exceeded (Apache Web Server/cPanel)
Un altro classico degli status code non ufficiali che è possibile incontrare quando il server supera la larghezza di banda specificata dall’amministratore del server. Se possiedi un sito web su un hosting condiviso puoi provare a visualizzarlo cercando di saturare quanta più banda possibile. Basterebbe un semplice script per riuscirci.

Status code 530 Site is frozen
Uno status code che appare come indicazione per un sito in stato (frozen) congelato a causa di inattività. Questo status code è tipico della piattaforma web Pantheon.

Status code 598 (Informal convention) Network read timeout error
Il tipico Status code utilizzato solo da alcuni proxy HTTP quando devono segnalare un timeout di lettura della rete dietro il proxy a un client davanti al proxy.

Status code di server Microsoft con servizi Internet Information Services ovvero IIS
Sono errori che appaiono quando si tenta di accedere ad un web server Microsoft Internet Information Services più comunemente identificato come IIS. Questi errori sono aggiuntivi rispetto agli status code della classe 4xx e sono:

Status code 440 Login Time-out
La sessione del client è scaduta pertanto è necessario effettuare nuovamente l’accedere.

Status code 449 Retry With
Il server non può procedere con l’elaborazione della richiesta perché l’utente non ha fornito tutte le informazioni richieste.

Status code 451 Redirect
Uno status code 451 generato da un malfunzionamento dei servizi IIS è differente dall’errore 451 precedentemente spiegato ovvero “Status code 451 Unavailable For Legal Reasons (RFC 7725)” Questo status code viene mostrato quando il client cerca di connettersi ad un server errato (ad esempio un server che non riesce a collegarsi alla porta del server della posta elettronica). Il modo per risolverlo è trovare il server giusto.

Status code Nginx

Come per i servizi IIS di Microsoft, anche il web server Nginx espande la classe degli errori 4xx per segnalare problemi che nascono da specifiche richieste del cliente.
Ecco gli status code più comuni del web server Nginx.

Status code 444 No Response
Uno status code utilizzato per lo più internamente quando bisogna istruire il server affinchè non restituisca alcuna informazione al client e chiuda immediatamente la connessione.

Status code 494 Request header too large
Un errore che viene restituito quando il cliente invia una richiesta troppo grande o una riga di intestazione troppo lunga.

Status code 495 SSL Certificate Error
Questo status code viene elaborato quando il client fornisce un certificato client non validoUn’espansione del codice di risposta 400 Bad Request, utilizzato q.

Status code 496 SSL Certificate Required
Quando viene richiesto un certificato client ma non viene fornito allora il server restituisce uno status code 496 come espansione del codice di risposta 400 Bad Request.

Status code 497 HTTP Request Sent to HTTPS Port
Un’espansione del codice di risposta 400 Bad Request, utilizzato quando il client ha inoltrato una richiesta HTTP a una porta che sta ascoltando le richieste HTTPS.

Status code 499 Client Closed Request
Questo Status code viene mostrato quando il client ha chiuso una richiesta in anticipo rispetto alla risposta del server.

Status code Cloudflare

Il servizio di reverse proxy di Cloudflare espande la classe dei codici di stato 5xx per segnalare problemi con il server di origine.

Status code 520 Unknown Error
L’errore 520 viene utilizzato come risposta “catch-all response for when the origin server returns something unexpected”, elencando le reimpostazioni di connessione, le intestazioni di grandi dimensioni e le risposte vuote o non valide come trigger comuni.

Status code 521 Web Server Is Down
La connessione da Cloudflare è stata rifiutata dal server di origine.

Status code 522 Connection Timed Out
Questo status code indica che ci sono problemi di negoziazione pertanto non è possibile instaurare una connessione tra il protocollo TCP e il server di origine.

Status code 523 Origin Is Unreachable
Cloudflare non è riuscito a raggiungere il server di origine – questo può accadere quando i DNS del server di origine non sono corretti.

Status code 524 A Timeout Occurred
Uno status code che si genera quando cloudflare riesce a completare una connessione TCP con il server di origine, ma non riceve una risposta HTTP in breve tempo.

Status code 525 SSL Handshake Failed
Cloudflare non riesce stabilire una connessione SSL/TLS con il server di origine.

Status code 526 Invalid SSL Certificate
Cloudflare ha problemi con la convalida del certificato SSL/TLS presentato dal server di origine.

Status code 527 Railgun Error
Questo Status code appare quando la richiesta è scaduta o non è riuscita dopo che la connessione WAN (Wide Area Network) è stata stabilita.

Questo è un elenco completo degli status code che potrai incontrare lavorando sul web.
Nei miei oltre 10 anni di carriera ne avrò incontrati al massimo il 30% e ne ho creati per gestire eventuali problematiche SEO un altro 10% il resto dubito che ne avrai effettivamente necessità di gestirli.

Per realizzare questo articolo ho lavorato duramente, consultando molte risorse soprattutto americane ed inglesi, nonché manuali di server.

Qualunque problema o incongruenza dovessi leggere ti chiedo la cortesia di segnalarmelo e provvederò a prendere la giusta misura in modo da garantire a te e agli altri utenti un servizio davvero ottimale.

Lascia il tuo commento