Se vi è mai capitato di dover effettuare il troubleshooting di un codice di errore HTTP saprete sicuramente quanto possa essere frustrante questo lavoro.
In base alla nostra esperienza, gli errori HTTP si dividono in tre categorie principali:
- problemi inerenti il dispositivo dell’utente
- problemi con il server Web
- problemi di connettività.
La vera chiave per individuare questi problemi in modo efficace è di capire a quali di tali categorie appartengono. In questo articolo e nel successivo, vi mostreremo come fare.
I CODICI DI STATO HTTP
La chiave per comprendere il problema è conoscere un po’ di codici di stato HTTP. Ogni volta che un client ha problemi con una richiesta HTTP a un server Web, il server restituisce un codice di risposta. Questi codici di risposta sono organizzate in cinque categorie.
Codici della serie 100. I codici di stato HTTP che vanno da 100 a 199 hanno carattere informativo. Veder comparire uno di questi codici è un evento piuttosto raro per un paio di motivi. In primo luogo, se un browser sta tentando di accedere a un sito Web e vengono restituiti questi codici, solitamente non sono visualizzati sullo schermo. Si tratta semplicemente di codici interni di riferimento per il browser stesso. L’altro motivo per cui questi tipi di codici sono abbastanza rari è che le specifiche originali HTTP non prevedono codici di stato in questa gamma di valori. Per questo motivo, sono ancora usati in modo molto limitato.
Codici della serie 200. I codici di stato che vanno da 200 a 299 sono codici di “successo”. Di nuovo, probabilmente non vedrete mai questi codici visualizzati sullo schermo durante una normale sessione di navigazione Web. Sono invece utilizzati internamente dal browser per confermare il successo di un’operazione e lo stato attuale di una richiesta. Anche se questi codici non sono normalmente visualizzati, esistono strumenti di troubleshooting in grado di leggerli e, come la maggior parte degli altri codici di stato HTTP, possono essere preziosi durante un processo di diagnosi.
Codici della serie 300. Codici di stato nella serie da 300 a 399 sono i codici di reindirizzamento. In sostanza, dicono al browser Web che devono essere effettuate alcune altre azioni al fine di soddisfare la richiesta. A seconda della loro natura, queste azioni possono essere eseguite automaticamente o possono richiedere ulteriori input da parte dell’utente. Per esempio, il codice di stato 301 indica che una determinata risorsa è stata rimossa in modo permanente e che tutti le future chiamate a tale risorsa devono essere indirizzate a un URL specifico.
Codici della serie 400. I codici di stato nella serie 400 sono considerati codici di errore del client. Questi tipi di codici sono spesso correlati alla sicurezza. Per esempio, se un client tenta di accedere a una risorsa per cui non ha l’autorizzazione, il server restituisce un codice di stato 401. Allo stesso modo, se il client tenta di accedere a una risorsa non autorizzata, e lo stato di autenticazione del client non cambia in funzione della situazione, allora il server può restituire un codice di stato di 403, il quale indica che l’accesso alla risorsa è vietato.
I codici di errore di livello di 400 possono anche essere restituiti se la richiesta non è formulata in modo corretto o se il client ha raggiunto il time out. All’interno di questa serie c’è un errore che può essere fuorviante, il 404. Anche se questo codice è tecnicamente classificato come errore connesso al client, può in realtà rappresentare un errore sia sul client sia sul server perché indica semplicemente che la risorsa richiesta non è stata trovata. Se questo errore si verifica sul versante client, è spesso indicazione di problemi inerenti la connettività di rete. Altre volte, invece, l’errore può verificarsi perché una risorsa è stata rimossa dal server o è stata rinominata.
Codici della serie 500. I codici di stato del livello 500 codici rappresentano errori del server. Per esempio, se un server Web è in time out, produrrà un errore 504. Spesso, però, un livello di errore 500 non rappresenta un problema inerente al server in sé, ma piuttosto con l’applicazione Web che è in esecuzione su tale server. Per esempio, abbiamo recentemente attivato un sito personale codificato in ASP, che genera dinamicamente le pagine HTML. Durante il processo di debug, vi sono stati molti momenti in cui il codice sotto esame ha indotto il nostro server Web a ritornare il codice di stato HTTP 500, il quale è un codice generico che indica un errore del server. Questo codice significa semplicemente che durante il nostro debug qualcosa è andato storto e che HTTP non ha saputo come comportarsi.
In conclusione
Come potete vedere, i singoli codici di errore HTTP offrono molti indizi per individuare la causa di un problema. Tuttavia, anche così, a volte, non si riesce a risolvere il problema fino a quando non si possono raccogliere maggiori informazioni. Fortunatamente, sono disponibili alcuni strumenti gratuiti per il troubleshooting che possono aiutarci. Nella seconda parte di questo articolo, vi mostreremo come è possibile utilizzare tali strumenti per avere importante aiuto nel processo di risoluzione dei problemi.
*MCSE, Microsoft Most Valuable Professional in ambito Windows 2000 Server and IIS