Codici di stato HTTP
Sul web sono presenti più di un 1,7 miliardi di siti web. Se un utente vuole vedere sul suo browser un sito web specifico, quale l’homepage della sua gioco di ruolo online perferito ha bisogno di un cosiddetto indirizzo internet. Così si “raggiunge” e si visiona la pagina desiderata sul server remoto.
La trasmissione dei dati richiesti (il sito web per capirci!) sul vostro computer avviene con l’aiuto del protocollo di trasferimento di un ipertesto (HTTP). L’HTTP è un protocollo a livello applicativo usato come principale sistema per la trasmissione d'informazioni sul web ovvero in un'architettura tipica client-server. Le specifiche del protocollo sono gestite dal World Wide Web Consortium (W3C). Un server HTTP generalmente resta in ascolto delle richieste dei client sulla porta 80 usando il protocollo TCP a livello di trasporto. Il browser (in questo caso si chiama client) invia una richiesta al server web che risponde con un codice di stato http costituito da una serie di numeri a tre cifre.
Tramite questo messaggio, il server web comunica al browser se la richiesta è stata completata con successo, se è scappato un errore o se è necessaria un’autenticazione di qualche tipo per visualizzare la risorsa. Il codice di stato http è una parte essenziale del messaggio del server web che viene automaticamente aggiunta dal server all’header (intestazione) di ogni risposta http. Un utente riceve generalmente i codici di stato http solo sotto forma di una pagina html auto generata in autonomia dal web server.
Significato dei codici di stato HTTP
Categorie degli stati HTTP
I codici di stato http sono divisi generalmente in cinque macro categorie, nelle quali le prime cifre del codice indicano l’appartenenza o meno ad una specifica categoria. Così il codice di stato http 500 fa parte della categoria 5xx, mentre il codice 404 di quella 4xx. Si distingue in:
Categoria 1xx (informativa): nel caso in cui venga comunicato un codice di stato http della categoria 1xx, il server risponde al client che la richiesta è ancora in corso. Rientrano in questa categoria i codici che inviano informazioni da elaborare e che rispondono mentre la richiesta è in corso. Solitamente è assai difficile vedere questo codice di stato.
Categoria 2xx (successo): un codice 2xx comunica che un’operazione è andata a buon fine. Se viene inviato un codice 2xx, vuol dire che il server ha ricevuto, lavorato e accettato correttamente la richiesta del client. Pertanto i codici di categoria 2xx vengono inviati normalmente in contemporanea con i dati richiesti del sito. Generalmente l’utente finale non si accorge di niente e visualizza solo la pagina web richiesta.
Categoria 3xx (reindirizzamento): il codice 3xx indica che la richiesta è stata ricevuta dal server. Per assicurarsi una corretta elaborazione, sono necessari altri passaggi lato client. I codici 3xx si riscontrano soprattutto nel caso di inoltri e reindirizzamenti (quando una pagina ha cambiato destinazione ecc.)
Categoria 4xx (errore client): se appare un codice 4xx, si tratta di un errore del client. Il server ha ricevuto la richiesta, ma non può eseguirla, normalmente a causa di una richiesta errata di qualche tipo. Solitamente agli utenti viene segnalato questo tipo di errore tramite la creazione automatica di una pagina HTML con alcune informazioni aggiuntive sull’errore.
Categoria 5xx (errore server): con il codice 5xx si indica un errore generico del server imputabile al server remoto. Errori di questo tipo segnalano che la richiesta effettuata non è momentaneamente eseguibile o non è addirittura possibile. Anche in questo caso viene generalmente creata una pagina di errore HTML con alcune info aggiuntive.
Codici di stato HTTP più importanti e famosi!
I codici di stato HTTP ricoprono un ruolo fondamentale per i gestori dei siti. Gli errori che compaiono agli utenti sono soprattutto i codici di errore del client come il 404 (il famosissimo pagina non trovata!) o gli errori del server come il 503 (sarà capitato nche a voi di incappare in un temuto “Service Unavailable”!).
I due errori citati sono molto “comuni” ma ne esistono molti altri che non sono visibili immediatamente e che possono essere controllati dagli amministratori solo tramite strumenti lato server. La lista che segue mostra alcuni dei codici di risposta più comuni, per una lista completa potete dare un occhiata alla pagina relativa di Wikipedia:
Codice di stato 200 (OK!): il codice di stato http 200 indica che la richiesta è andata a buon fine. Tutti i dati richiesti sono stati localizzati sul server web e trasmessi al client. Normalmente gli utenti non visualizzano questo codice.
Codice di stato 301 (Moved Permanently): il codice 301 significa che i dati richiesti dal client non si trovano più all’indirizzo richiamato, ma sono invece stati spostati permanentemente su un nuovo indirizzo web. Visto che l’URL è stato modificato il browser reindirizza automaticamente gli utenti al nuovo indirizzo e quello vecchio non è più valido. Normalmente anche il codice 301 non viene visto dall’utente, dato che viene semplicemente cambiato l’URL sulla barra di navigazione.
Codice di stato 302 (Moved Temporarily): Al contrario dello stato 301, che indica un trasferimento permanente, il codice 302 comunica che i dati richiesti sono raggiungibili temporaneamente ad un altro indirizzo. Al contrario dello stato 301 il vecchio indirizzo rimane però valido!
Codice di stato 403 (Forbidden): il codice di stato 403 segnala al client che l’accesso ai dati richiesti è protetto e che la richiesta non può essere eseguita per via di un’autorizzazione mancante del client. Magari la risorsa che cercate è stata protetta da nome utente e password?
Codice di stato 404 (Not found): L’errore HTTP più famoso di tutti! Se si riceve la risposta del server 404, i dati richiesti della pagina non sono stati trovati sul server o più semplicemente che la pagina richiesta non esiste più! L’unica cosa che può fare l’utente che riceve un errore 404 è quello di controllare se ha inserito l’indirizzo corretto sulla barra degli indirizzi :-)
Codice di stato 500 (Internal Server Error): La risposta del server 500 serve per raggruppare tutti gli errori inaspettati del server. Se si riscontra un problema lato server che impedisce di richiamare la pagina richiesta, verrà restituito automaticamente questo codice di stato. Oltre alla risposta al client, il server web genera solitamente un log interno di errore che deve essere analizzato dai webmaster per effettuare le correzioni necessarie al software.
Codice di stato 503 (Service Unavailable): Se un utente visualizza un codice 503 significa che il server web è sovraccarico. A volte la risposta del server contiene informazioni che specificano quando la richiesta potrà essere rielaborata. In ogni caso, gli utenti possono stare tranquilli: non possono fare nulla per risolvere il problema essendo il server remoto il problema.
Cosa deve fare il gestore di un sito?
Per offrire ai visitatori un’esperienza di navigazione ottimale, i webmaster devono fare in modo di ridurre al minimo le pagine di errore HTML generate automaticamente. È quindi nell’interesse dei gestori dei siti web prendere le misure adeguate per far rimanere gli utenti sulla pagina, anche in caso di errori.
Pagine di errore alternative migliorano sempre la navigabilità sul sito per gli utenti!
Pertanto si consiglia di inserire delle pagine personalizzate piuttosto che utilizzare quelle generate automaticamente dal server tramite il file di configurazione .htaccess. Gli avvisi alternativi 404 vanno generalmente adattati al design del sito e possono offrire spesso, oltre al codice di stato, altre informazioni come pagine con soluzioni alternative o una panoramica generica di cos’altro può offrire il sito.
Speriamo che questa veloce panoramica dei codice di stato (e di errore) dei siti web vi abbia reso più chiaro il significato di quei numerini che vedete da anni spuntare di tanto in tanto durante le vostre sedute di web surfing ;-)