Cosa Sono e Cosa Significano i Codici di Stato HTTP

Per visitare un sito web le uniche cose che facciamo sono aprire il browser, digitare l’indirizzo del sito che vogliamo aprire e aspettare che quest’ultimo si apra, e il tutto avviene in pochi secondi. Le operazioni che noi facciamo sono quindi poche ma dietro a questo processo avvengono decine di operazioni tra client server che noi non possiamo vedere, ma che sono fondamentali per portare a termine la richiesta che abbiamo fatto al server.

 


 

La comunicazione tra client e server deve però seguire un protocollo che nella maggior parte dei casi è il protocollo HTTP (HyperText Transfer Protocol) che è quindi il principale sistema usato per la trasmissione di dati sul web.

Quando noi richiediamo una pagina web il browser fa delle richieste al server il quale le decodifica e manda al client delle risposte che lo informano circa lo stato della richiesta. Queste risposte sono chiamate codici di stato HTTP e sono rappresentate con tre cifre a loro volta raggruppate in classi le quali sono rappresentate dalla prima cifra del codice.

Codici di stato http-header richiesta e risposta

In questa immagine possiamo vedere l’header di richiesta fatta dal client e l’header di risposta mandato dal server

CODICI DI STATO

 

1xx INFORMAZIONI

I codici che appartengono alla prima classe (riconducibile dal numero 1 in testa al codice) sono codici informativi ovvero servono al server a informare il client cosa deve fare.

  • 100 Continua: indica che il server ha ricevuto l’header di richiesta da parte del client ma quest’ultimo deve inviare l’altra parte della richiesta (vedi immagine sopra);
  • 101 Cambio protocollo di comunicazione: questo codice indica che il client ha chiesto di cambiare il protocollo e il server che ha ricevuto la richiesta l’ha accettata.

2xx SUCCESSO

I codici della seconda classe indicano che il server ha ricevuto la richiesta, l’ha processata e l’ha portata a termine.

  • 200 OK: La richiesta è stata inviata con successo e il server ha correttamente fornito la pagina richiesta (vedi la sezione “general” dell’immagine sopra);
  • 201 Risorsa Creata: questo codice indica che il server ha creato la risorsa ed è in attesa di inviarla al client nel caso non sia possibile fare questa cosa nell’immediatezza verrà inviato il codice 202;
  • 202 Accettato ma non creato: la richiesta da parte del client è stata accettata, ma l’elaborazione della stessa deve essere ancora completata;
  • 203 Informazione non autorevole: il server ha elaborato la richiesta ma non l’ha eseguita in quanto non è attendibile;
  • 204 Nessun contenuto: il server ha elaborato la richiesta ma non restituisce alcun contenuto;
  • 205 Ripristina contenuti: il server ha accettato ed elaborato la richiesta e il client deve reimpostare il documento, per esempio cancellare tutto il contenuto di un form in modo tale da fare un nuovo inserimento;
  • 206 Contenuto parziale: questo codice indica che il server ha soddisfatto la richiesta GET parziale del contenuto.

3xx REDIREZIONE

I codici della terza classe indicano che la richiesta del client è stata reinderizzata verso altre destinazioni e quindi il client deve eseguire altre operazioni per portare a termine la richiesta. Questa classe generalmente si ottiene quando una risorsa non è più disponibile nell’indirizzo richiesto ma è stata spostata in un altro indirizzo.

  • 300 Scelta multipla: il server può eseguire varie azioni in base alla richiesta;
  • 301 Contenuto spostato permanentemente: la risorsa richiesta dal client è stata spostata in modo permanente in un altro indirizzo;
  • 302 Contenuto spostato temporaneamente: la risorsa richiesta si trova temporaneamente in una URI diversa e visto che il redirect in alcune occasioni potrebbe essere alterato, il client deve usare sempre l’URI  richiesta per le future richieste. Questo codice può essere mostrato quando per esempio un database non è reperibile a causa di manutenzione e quindi si provvede a reindirizzare il traffico verso un altro database contente le stesse informazioni del database non disponibile;
  • 303 Vedere altre posizioni: la risposta alla richiesta può essere trovata in un’altra URI usando il metodo GET;
  • 304 Non modificato: l’URL e la pagina richiesta non sono state modificate dopo l’ultima richiesta quindi il server non riesce a restituire i contenuti della pagina;
  • 305 Usa proxy: la risorsa richiesta dal client è accessibile solo attraverso un proxy;
  • 307 Redirezione temporanea: la risorsa richiesta risiede temporaneamente in un URI diverso.

4xx ERRORE DEL CLIENT

I codici della quarta classe vengono mostrati quando la richiesta inviata dal client presenta un errore o non è corretta e quindi il server non può restituire nessuna risorsa.

  • 400 Richiesta non valida: la richiesta non può essere capita dal server a causa di errori di sintassi;
  • 401 Non autorizzato: non sei autorizzato ad accedere a quel contenuto e quindi ti devi autenticare;
  • 403 Non consentito: la richiesta è corretta ma il server si rifiuta di compierla;
  • 404 Pagina non trovata: la risorsa richiesta dal client non è stata trovata nel server;
  • 405 Metodo non consentito: la richiesta è stata fatta usando un metodo non consentito;
  • 406 Non accettabile: la risorsa trovata sul server non corrisponde con le caratteristiche di contenuto richieste;
  • 407 Richiesta autenticazione proxy: il client deve prima autenticarsi con il proxy (simile al codice 401);
  • 408 Richiesta scaduta: il tempo che il server è disposto ad aspettare per ricevere una richiesta dal client è scaduto e quindi il server ha terminato la connessione;
  • 409 Conflitto: la richiesta non può essere portata a termine a causa di un conflitto della risorsa;
  • 410 Non disponibile: la risorsa richiesta non è più disponibile e non lo sarà nemmeno in futuro;
  • 411 Lunghezza richiesta: il server non accetta la richiesta in quanto quest’ultima non specifica la propria dimensione;
  • 412 Precondizione fallita: il server non soddisfa una delle condizioni preliminari che il server ha specificato per la richiesta;
  • 413 Richiesta troppo estesa: il server non elabora la richiesta in quanto quest’ultima è più grande di quanto il server è in grado di elaborare;
  • 414 URL troppo lungo: l’URL richiesto è troppo lungo e quindi il server non può interpretarlo;
  • 415 Formato non supportato: l’entità della richiesta è in un formato non supportato dal server o dalla risorsa richiesta;
  • 416 Intervallo non corretto: la richiesta comprende un intervallo non corretto;
  • 417 Attesa non riuscita: il server non riesce a soddisfare i requisiti del campo Expect request-header;

5xx ERRORE DEL SERVER

Questa è la quinta e ultima classe. I codici di questa classe vengono mostrati quando, nonostante la richiesta è stata fatta correttamente, c’è un problema del server e quindi non può processarla.

  • 500 Errore interno: il server ha riscontrato un errore e non può portare a termine la richiesta;
  • 501 Non implementato: il server non riesce a soddisfare il metodo della richiesta;
  • 502 Gateway non valido: il server che sta operando come proxy o gateway ha ricevuto dal server principale una risposta non valida;
  • 503 Servizio non disponibile: il server non è temporaneamente raggiungibile. Questa cosa può essere dettata da vari motivi come: un sovraccarico di richieste o una manutenzione del server;
  • 504 Gateway timeout: il server che sta operando come un proxy o gateway non ha ricevuto la risposta dal server principale nei tempi previsti;
  • 505 Versione HTTP non supportata: il server non supporta la versione HTTP con la quale è stata fatta la richiesta.

 

 

I commenti sono chiusi.