Per visitare un sito o un portale web è sufficiente aprire un web browser (Google Chrome, Mozilla Firefox, Microsoft Internet Explorer, ...), digitare l'URL (Uniform resource locator) nella barra degli indirizzi, premere il pulsante "Invio" e attendere che la pagina si carichi. L'intera operazione in genere dura non più di pochi secondi, a seconda della "pesantezza" della pagina da caricare e dello stato di congestione della rete Internet.
Dietro questo processo, si celano decine e decine di operazioni e richieste che intercorrono tra il client (il computer sul quale è installato il browser che invia la richiesta) e il server (la macchina che ospita fisicamente il sito e le risorse che lo compongono). La comunicazione tra client e server è gestita in buona parte tramite il protocollo HTTP, un protocollo di richiesta-risposta che gestisce il traffico di bit e byte che si genera lungo la dorsale che connette client e server. Le richieste arrivano sotto forma di comandi che, una volta decodificati dal server, producono automaticamente "risposte tipo" che informano il client sullo stato della richiesta.
Queste risposte, detti codici di stato HTTP (HTTP status code in inglese) sono parte integrante del protocollo HTTP, vengono rappresentate da un numero composto da tre cifre decimali e sono raggruppate in "classi" a seconda della tipologia di informazione che forniscono.
1xx Informational
I codici di stato appartenenti alla prima classe, quelli che iniziano per "1", sono di tipo informativo e sono utilizzati dal server per informare il client della ricezione della richiesta e della necessità che il browser continui a inviare informazioni per la corretta individuazione della risorsa desiderata. Lo status code 100 Continue, ad esempio, comunica al browser che la richiesta iniziale è stata ricevuta ma deve completare la procedura, inviando altri dati, se vuole ottenere l'informazione che gli necessita.
2xx Success
I codici della seconda classe, invece, indicano che il server non solo ha ricevuto la richiesta ma l'ha anche processata e portata a compimento. Il codice di stato 200 OK indica che la richiesta è stata completata correttamente, mentre il codice di stato 201 Created indica che il server ha creato una nuova risorsa ed è in attesa di poterla inviare al client.
3xx Redirection
Gli status code della terza classe indicano che la richiesta del browser è stata reindirizzata verso altre "destinazioni" e il client deve necessariamente eseguire altre azioni per vedere eseguita la richiesta iniziale.
Questa classe di status code si ottiene tipicamente nei casi in cui la risorsa web cercata non sia più disponibile all'indirizzo contattato (sebbene lo fosse in precedenza) essendo stata spostata presso un diverso URL. Nel caso del codice 301 Moved Permanently, la risorsa che si cercava è stata rimossa permanentemente dal server e l'utente sarà reindirizzato verso un'altra risorsa, solitamente una copia di quella cercata inizialmente, specificata dal webmaster con il comando "Location". Il codice 302 Found, invece, segnala che la risorsa cercata è "reperibile" temporaneamente (originariamente, infatti, il codice era chiamato 302 Moved Temporarily) ad un altro indirizzo ed effettua il redirect automatico. Questo tipo di status code può essere incontrato, ad esempio, nel caso in cui una manutenzione del database renda momentaneamente non accessibile una certa risorsa sul server e pertanto si provvede a indirizzare il traffico verso un secondo server contenente una copia del dato richiesto.
4xx Client error
I codici di stato HTTP della quarta classe sono utilizzati quando la richiesta inviata dal client è sintatticamente scorretta o presenta altre tipologie di errore. In questo caso il server non può far altro che rispondere con un messaggio di errore, nella speranza che l'utente riesca a individuare lo sbaglio e correggerlo inviando una nuova richiesta.
Il codice 401 not authorized, ad esempio, comparirà quando si tenta di accedere a una risorsa web per il quale è necessario autenticarsi. In questi casi sarà generalmente sufficiente inserire le proprie credenziali di accesso nell'apposito from di autenticazione per ovviare al problema. Il codice 403 Forbidden ricorda per molti versi il codice 401: l'utente non gode dei privilegi necessari per accedere alla risorsa; in questo caso non è però prevista la possibilità di inserire credenziali di autenticazione per proseguire nel recupero delle informazioni . Questi due casi possono presentarsi, ad esempio, nel caso in cui si tenti di accedere a una Intranet aziendale: il codice 401 può essere mostrato quando si cerca di accedere ad una risorsa aziendale da un indirizzo interno alla LAN dell'azienda e viene chiesto di inserire le credenziali di riconoscimento; il codice 403, invece, lo si otterrebbe tentando di accedere alle medesime risorse con un indirizzo IP esterno all'Intranet aziendale non possedendo, in tal caso, dei privilegi sufficienti al recupero dei dati.
Il codice 404 Not found è probabilmente il più famoso tra tutti i codici: segnala all'utente che la risorsa cui si vuole accedere non esiste sul server e , tipicamente, compare ogniqualvolta si sbaglia a digitare l'URL di una risorsa. Se, ad esempio, si dovesse scrivere www.fastweb.eu anziché www.fastweb.it, il browser mostrerà il codice 404, comunicando al client che all'indirizzo URL inserito non esiste la risorsa cercata (o non esiste affatto alcuna risorsa).
Nel dicembre 2015 l'Internet Engineering Steering Group (ente internazionale preposto alla verifica finale degli standard di Internet) ha approvato un suggerimento per la creazione di un nuovo status code. Il codice 451, proposto dall'informatico statunitense Tim Bray, compare quando si tenta di accedere a un contenuto web – immagine, filmato o pagina web – censurato dal Governo del Paese in cui si risiede.
Il codice di stato 451 nasce dall'esigenza di rendere più semplice e immediata la navigazione degli internauti. Non sempre le leggi nazionali sono le stesse in tutto il mondo e ciò che è lecito in un Paese europeo può essere illegale in Asia o America del Nord. Ciò porta a difformità di comportamento delle autorità legislative nazionali che possono disorientare l'internauta: un portale web accessibile negli Stati Uniti può essere sequestrato o censurato dalle autorità italiane e quindi inaccessibile ai naviganti del nostro Paese. Il codice 451 sostituisce così il più generico codice 403 ("Accesso negato" o Forbidden) , attualmente utilizzato per segnalare un sito web irraggiungibile a causa di un provvedimento governativo o dell'autorità giudiziaria.
Una nota di "colore". Il numero 451 non è casuale ma fa riferimento al romanzo di fantascienza Fahrenheit 451 di Ray Bradbury ambientato in un mondo dominato dalla censura e dal rigido controllo delle comunicazioni da parte di un dispotico Governo centrale.
5xx Server error
Gli status code della quinta e ultima classe e sono mostrati quando il server è andato incontro a un errore interno mentre tentava di processare la richiesta. Il codice di stato HTTP più famoso è il 503 Service Unavailable: il server è temporaneamente non raggiungibile per svariati motivi. Le cause più comuni sono: un sovraccarico di richieste che rende impossibile al server la gestione di ulteriori connessioni o una fase di manutenzione che implichi la disconnessione del server dalla rete.
Altro codice di status piuttosto conosciuto è il 504 Gateway timeout: il server che agisce come gateway di Rete (quindi come tramite tra il client ed il server finale contenente l'informazione cercata), non avendo ricevuto per tempo una risposta dal server di upstream (il server contattato per ottenere la risorsa voluta) , ha fatto cadere in timeout la richiesta iniziale.