Nel mondo dello sviluppo web, i codici di errore HTTP svolgono un ruolo fondamentale nell'influenzare l'esperienza utente e la reputazione di un sito web. In questo articolo, prenderemo in considerazione un elenco completo di codici di errore del server, analizzeremo i loro significati e impareremo come interpretare efficacemente i codici di risposta del server per risolvere i problemi e ottimizzare le prestazioni delle app web.
Che cos'è un codice di risposta HTTP
Il codice di risposta HTTP è il linguaggio dei server Web che traduce le richieste del browser in istruzioni comprensibili. È come un poeta che risponde a domande virtuali, dando loro un significato e una direzione. I codici di risposta non sono sempre codici di errore HTTP. Ad esempio, "200 OK" significa che tutto è OK, ma l'errore HTTP "404 Not Found" significa quando la pagina è persa nello spazio virtuale. Ogni codice è un'espressione unica dello stato del server, la cui decodifica ci consente di capire cosa sta succedendo dall'altra parte del mondo virtuale.
Codici 1xx (Informazioni)
I codici di stato 1xx nel protocollo HTTP sono una sorta di primo collegamento nel dialogo tra il server e il client. Invece di fornire una risposta completa a una richiesta, forniscono informazioni sullo stato corrente, rendendo lo scambio di dati più efficiente. Diamo un'occhiata più da vicino:
100 ContinuaCodice di risposta HTTP in cui il server dà il via libera all'utente, consentendogli di continuare a inviare una richiesta di grandi dimensioni in tutta sicurezza.
101 Protocolli di commutazione. Il server comunica al client che sta cambiando le regole del gioco, ad esempio, passando da HTTP al più sicuro HTTPS. In questo caso, l'intestazione "Upgrade" viene utilizzata per la modifica del protocollo.
Elaborazione 102Questo codice è come un messaggio che il server ha accettato la richiesta, ma è ancora impegnato con un'operazione complessa.
103 suggerimenti inizialiQui il server invia diverse intestazioni indicative al client prima della risposta principale, avvisandolo di qualcosa che potrebbe essere rilevante nel prossimo futuro.
Codice 2xx (riuscito)
I codici di errore HTTP nel gruppo 2xx indicano una richiesta riuscita dal server. In pratica, agiscono come una "luce verde" nell'ambito delle comunicazioni web, confermando che tutto sta procedendo secondo i piani ed è stato completato con successo.
200 OK. Questo stato viene utilizzato quando il server elabora una richiesta tramite il metodo GET senza problemi e restituisce i dati richiesti in risposta. L'intestazione "Content-Type" riporta il tipo di contenuto nella risposta. Informa semplicemente il client che la richiesta ha avuto successo.
201 creatoQui il server annuncia la creazione di una nuova risorsa.
202 accettatoIl server comunica all'utente che la richiesta è stata accettata, ma ci vorrà del tempo per rispondere.
203 Informazioni non autorevoliQuesto codice fornisce al client dati che potrebbero non essere ufficiali, ma possono essere utilizzati per il confronto.
204 Nessun contenutoIl server ha elaborato la richiesta ma non restituisce alcun contenuto aggiuntivo.
205 Reimposta contenutoQui al client viene chiesto di reimpostare la visualizzazione o i dati correnti dopo l'invio.
206 Contenuto parziale. Questo caso indica che la risposta contiene solo una parte del contenuto richiesto. L'intestazione "Content-Range" indica l'intervallo di contenuto parziale.
207 Multi-Stato. Il server ha completato con successo una richiesta multi-operazione del client e la risposta contiene informazioni sullo stato di ciascuna operazione.
226 IM usatoQuesto codice indica che il server ha utilizzato il metodo Metadati incrementali (IM) e ha risposto passando al client solo le parti di risorse modificate.
Codici 3xx (Reindirizzamenti)
I codici 3xx nel protocollo HTTP sono come puntatori che guidano l'utente verso una nuova posizione di risorsa. Informano il client che devono essere eseguiti dei passaggi successivi per ottenere il contenuto richiesto o per essere reindirizzati a un'altra risorsa. Immergiamoci nei dettagli di ciascuno di essi:
300 scelte multiple. Il client riceve un segnale che ci sono diverse possibili posizioni per la risorsa e gli viene data una scelta in risposta. Nelle circostanze attuali, l'intestazione "Posizione" potrebbe indicare opzioni alternative per la risorsa.
301 spostato in modo permanente. Il server segnala all'utente che la risorsa è stata spostata definitivamente in un'altra posizione.
302 Trovato. Questo codice HTTP è simile a un reindirizzamento temporaneo. Il server informa il consumatore che la risorsa è temporaneamente disponibile a un URL diverso. L'intestazione "Location" punta al nuovo URL per il reindirizzamento temporaneo.
303 Vedi AltroAl client viene comunicato che la risorsa è disponibile a un URL diverso e deve effettuare una richiesta GET a questo nuovo indirizzo.
304 non modificato. Questo stato comunica al client che la risorsa è rimasta invariata dall'ultima richiesta e non deve essere scaricata di nuovo. Quando si effettua una richiesta, l'intestazione "If-Modified-Since" viene utilizzata per verificare se la risorsa è stata modificata.
305 Usa proxy. In risposta, il server segnala che dovrebbe utilizzare il proxy specificato per accedere alla risorsa richiesta.
306 (riservato) — Il codice è stato riservato, ma in realtà non viene utilizzato.
307 Reindirizzamento temporaneoQuesto codice è simile a 302 Found, ma richiede che il client rimanga nel metodo di richiesta utilizzato nella richiesta originale.
308 reindirizzamento permanenteIndica che la risorsa è stata spostata in modo permanente su un nuovo URI e che il client dovrà utilizzare il nuovo URI per tutte le richieste future.
Errore HTTP 4xx (errori del client)
I codici di errore HTTP 4xx indicano errori del client. Ciò significa che il problema è sul lato utente, come il browser web o l'app.
Richiesta non valida 400Il server non può elaborare la richiesta a causa di errori di sintassi, dati non validi o altri errori sul lato client.
401 Non autorizzato. Il server non può elaborare la richiesta a causa di errori di sintassi, dati non validi o altri errori sul lato client.
402 pagamento richiesto. Il codice non è attivo al momento ed è riservato per un uso futuro. Potrebbe indicare la necessità di pagare prima di accedere alla risorsa in futuro.
Errore HTTP 403 Proibito. Il client non dispone di diritti sufficienti per accedere alla risorsa richiesta.
404 non trovato. La risorsa richiesta non esiste sul server. Questo è uno degli errori più comuni degli utenti.
Metodo 405 non consentito. Il server non supporta il metodo di richiesta specificato durante questa risorsa. L'intestazione "Allow" indica i metodi consentiti per la risorsa. Con questo codice,
406 Non accettabile. Il server non può fornire dati in un formato che possa essere accettato dal client.
407 Autenticazione proxy richiestaPer accedere alla risorsa richiesta è richiesta l'autenticazione sul server proxy.
408 Timeout richiesta. Il server era in attesa di ricevere una richiesta dal client, ma è scaduto. L'intestazione "Retry-After" potrebbe indicare il tempo dopo il quale la richiesta può essere ritentata.
409 Conflitto. La richiesta non può essere completata a causa di un conflitto con lo stato attuale della risorsa.
410 AndatoLa risorsa richiesta esisteva in precedenza, ma è stata eliminata e non è previsto il suo ripristino.
Lunghezza 411 richiestaIl server richiede di specificare la lunghezza del contenuto nella richiesta; l'assenza di questa informazione è considerata un errore.
Precondizione 412 non riuscitaNon è soddisfatta una precondizione nella richiesta che ne impedisce l'esecuzione.
413 Carico utile troppo grandeLa dimensione dei dati richiesti supera i limiti del server.
414 URI troppo lungoLa lunghezza dell'URI nella richiesta supera i limiti accettabili.
415 Tipo di supporto non supportatoIl server non può elaborare il tipo di dati fornito nella richiesta.
Gamma 416 non soddisfacenteErrore HTTP in cui l'intervallo richiesto non corrisponde ai dati correnti del server.
417 Aspettativa fallitaLa condizione prevista nell'intestazione "Expect" non è stata soddisfatta.
418 Sono una teiera. Questo codice è incluso come uno scherzo e non implica alcuna azione reale per l'utente o il server, e non è un errore a tutti gli effetti. Indica che il server è una teiera e non è in grado di fare il caffè.
421 Richiesta erroneamente indirizzataIl server non elabora la richiesta a causa di un errore nella richiesta o nella configurazione del server.
422 Entità non elaborabileIl server comprende la richiesta, ma non la elabora a causa di errori nei dati.
423 Bloccato. La risorsa è bloccata e non può essere elaborata.
424 Dipendenza fallitaLa richiesta dipende da un'altra richiesta non eseguita.
425 Troppo presto. Il server non è pronto a elaborare la richiesta perché è arrivata in anticipo.
426 Aggiornamento richiestoIl server richiede l'utilizzo di un protocollo più avanzato per elaborare la richiesta.
428 Precondizione richiestaIl server richiede che nella richiesta vengano specificate determinate precondizioni.
429 Troppe richiesteIl client ha inviato troppe richieste in poco tempo, superando i limiti del server.
431 Campi intestazione richiesta troppo grandiLe intestazioni delle richieste superano la dimensione massima consentita.
449 Riprova con. Indica che la richiesta non può essere eseguita dal server corrente, ma può essere elaborata correttamente da un altro server e il client deve ritentare la richiesta con un nuovo URI.
451 Non disponibile per motivi legaliLa risorsa non è disponibile per motivi legali.
499 Richiesta chiusa dal clienteIl server ha ricevuto la richiesta, ma la connessione è stata chiusa dal client prima del completamento dell'elaborazione.
Errore HTTP 5xx (errori del server)
I codici di errore HTTP 5xx indicano i problemi del server. Questi codici indicano problemi che si sono verificati sul lato server, rendendo il server incapace di elaborare la richiesta dell'utente nel modo corretto. Diamo un'occhiata più da vicino:
Errore HTTP 500 Errore interno del server. Il server incontra circostanze impreviste che gli impediscono di completare la richiesta. L'intestazione "Server" può indicare il server su cui si è verificato l'errore.
501 non implementato. Il server non supporta la funzionalità richiesta per elaborare la richiesta del client. L'intestazione "Via" potrebbe indicare il server proxy tramite il quale si è verificato l'errore.
502 Bad GatewayQuesto codice significa che il server che funge da proxy ha ricevuto una risposta errata da un altro server.
HTTP Errore 503 Servizio non disponibileIl server non è temporaneamente in grado di elaborare le richieste.
Timeout gateway 504Il server che funge da proxy non ha ricevuto una risposta tempestiva da un altro server.
505 Versione HTTP non supportata. Il server non supporta la versione del protocollo HTTP specificata nella richiesta. Come opzione di backup, l'intestazione "Upgrade" potrebbe indicare i protocolli supportati.
506 Variante Anche NegoziaQuesto stato non è utilizzato in HTTP/1.1; tuttavia, se il server rileva una configurazione interna che determina ambiguità nella negoziazione del contenuto, può utilizzare questa risposta.
507 Spazio di archiviazione insufficienteIl server non può soddisfare la richiesta a causa dello spazio di archiviazione insufficiente sul server.
508 Loop rilevatoIl server ha rilevato un loop durante l'elaborazione della richiesta e si rifiuta di completarla per evitare un loop infinito.
509 Limite di larghezza di banda superatoL'errore si verifica quando la larghezza di banda del server viene superata a causa di un volume elevato di richieste o di traffico.
510 Non estesoIl cliente deve trasferire ulteriori estensioni per continuare la richiesta.
511 Autenticazione di rete obbligatoriaIl client deve autenticarsi per poter accedere alla rete.
Come controllare il codice di stato della pagina
In questa sezione, prenderemo in considerazione tre modi principali per controllare il codice di stato della pagina: tramite la riga di comando, utilizzando un browser Web e utilizzando servizi online indipendenti. Ognuno di questi metodi ha i suoi vantaggi e può essere utile in diverse situazioni.
Controllo della risposta del server tramite riga di comando
La riga di comando fornisce un modo comodo per controllare il codice di stato della pagina senza dover usare un browser web. Per questo metodo, devi aprire la riga di comando e usare il comando:
curl -I http://page-address
Questo comando invia una richiesta HEAD (richiesta solo di intestazioni) all'URL specificato e visualizza informazioni tra cui il codice di stato HTTP:
L'esempio sopra mostra un codice di risposta riuscito. Nel caso di una risposta che contiene un codice di errore, come l'errore HTTP 404 Not Found, il risultato sarà simile:
Controllo della risposta del server tramite la console del browser
La console per sviluppatori del browser Web fornisce strumenti per condurre varie operazioni, tra cui il controllo del codice di stato della pagina. Per vedere il codice HTTP nella risposta del server, è necessario aprire la console per sviluppatori (Ctrl+Shift+K) o (Ctrl+Shift+J) a seconda del browser utilizzato. Quindi, selezionare la sezione "rete" e caricare la pagina desiderata:
Controllo della risposta del server tramite strumenti indipendenti
Esistono numerosi servizi online indipendenti che forniscono strumenti per controllare il codice di stato della pagina web. Questi servizi solitamente consentono di ricevere rapidamente una panoramica della disponibilità e delle prestazioni della risorsa. Tutti funzionano utilizzando lo stesso principio. Come esempio, prenderemo in considerazione la risorsa più popolare: httpsstatus.io
Per prima cosa, devi aprire il servizio stesso, quindi inserire l'indirizzo della pagina la cui risposta devi scoprire e richiedere la verifica:
Il risultato verrà visualizzato in fondo alla pagina:
Conclusione
In conclusione, va sottolineato che comprendere ed essere in grado di leggere i codici di errore HTTP è un'abilità fondamentale per chiunque sia coinvolto nello sviluppo web e nella manutenzione del server. Mentre scopriamo ogni errore ed esploriamo gli strumenti per rilevarli, vediamo i motivi per cui è così importante gestire efficacemente questi aspetti dei servizi web.