Codici di stato del protocollo HTTP

· 6 min lettura
Codici di stato del protocollo HTTP

HTTP sta per Hyper Text Transfer Protocol.

Tutti i codici di stato presenti, ad eccezione di quelli segnati esplicitamente, sono definiti nello standard HTTP/1.1 RFC 7231.

1## - Informazione

  • 100 - Continue
    Il server ha ricevuto l'header della richiesta dal client, che dovrebbe procedere ad inviare la parte rimanente della richiesta HTTP
  • 101 - Switching protocols
    Il server ha ricevuto una richiesta dal client per cambiare protocollo di comunicazione, per esempio utilizzare una nuova versione di HTTP, e procederà a cambiare
  • 102 - Processing
    Il server ha ricevuto la richiesta dal client e sta procedendo ad inviare la risorsa richiesta. Tuttavia, ancora non è stata inviata alcuna risposta
  • 103 - Early hints
    Vengono inviati degli header di risposta prima della risorsa richiesta

2## - Successo

  • 200 - OK
    Il server ha inviato correttamente la risorsa richiesta dal client
  • 201 - Created
    La risorsa richiesta è stata compresa e il server ha proseguito a creare una risposta per il client
  • 202 - Accepted
    La risorsa è stata accettata dal server e si proseguirà al soddisfarne la richiesta al più presto
  • 203 - Non-authoritative information
    I contenuti della risposta potrebbero non essere stabiliti dal server ma da una copia locale o da applicazioni di terze parti
  • 204 - No content
    Il server ha processato la richiesta del client ma non necessita di inviare alcun contenuto
  • 205 - Reset content
    Il server ha processato la richiesta ma richiede che il client ripristini la visualizzazione del contenuto
  • 206 - Partial content
    Il server sta inviando parte della risorsa richiesta. Questo potrebbe avvenire dopo il ripristino di un download iniziato precedentemente o da una richiesta specifica del client
  • 208 - Multi-status
    Il contenuto della risposta può contenere più codici di stato HTTP, in relazione al numero di sotto richieste effettuate
  • 209 - Already reported
    La richiesta è già stata soddisfatta e non verrà re-inviata
  • 226 - IM used
    Il server ha accettato una richiesta ad una risorsa con metodo GET e la risposta è il risultato di una o più manipolazioni all'istanza corrente

3## - Reindirizzamento

  • 300 - Multiple choices
    Il client può accedere alla risorsa desiderata in modi diversi. Esempio: un video può essere scaricato in più formati, un file può essere scaricato con estensioni differenti o più risorse sono rappresentate con lo stesso nome
  • 301 - Moved permanently
    La risorsa richiesta è stata spostata ad un nuovo indirizzo e il server proseguirà a fornire la nuova ubicazione
  • 302 - Found
    La risorsa richiesta è stata spostata in via temporanea ad un nuovo indirizzo, ma dato che esso potrebbe cambiare, il server non reindirizzerà ad altri indirizzi e procederà a completare la richiesta. Non è necessario usare lo stesso metodo per richiedere la risorsa
  • 303 - See other
    La risorsa richiesta può essere ottenuta attraverso un indirizzo diverso e dovrebbe essere richiesta a tale indirizzo
  • 304 - Not modified
    La risorsa non è stata modificata dopo l'ultima volta che è stata richiesta. Di solito, il client fornisce un header che contiene l'ultima versione della risorsa richiesta, in modo da permettere al server di non inviarla, se essa non sia stata modificata da allora
  • 305 - Use proxy
    La risorsa richiesta deve essere richiesta tramite un proxy, il cui indirizzo deve essere fornito dal server. Il client dovrà ripetere la richiesta attraverso il proxy fornito
  • 307 - Temporary redirect
    La risorsa è stata spostata ad un altro indirizzo. Tuttavia, dato che esso potrebbe cambiare, le richieste future possono essere effettuate con l'indirizzo originale. A differenza dal codice 302, il metodo non dovrebbe cambiare. Esempio, una richiesta con metodo POST dovrà essere effettuata al nuovo indirizzo con una nuova richiesta POST
  • 308 - Permanent redirect (sperimentale)
    La risorsa richiesta è stata spostata ad un nuovo indirizzo e dovrà essere richiesta solo tramite quell'indirizzo

4## - Errore lato Client

  • 400 - Bad request
    Il client ha richiesto una risorsa con una sintassi della richiesta errata
  • 401 - Unauthorized
    Il client non è riuscito ad autenticarsi. È simile al codice 403, ma in questo caso non è stato specificato un header di autenticazione valido (WWW-Authenticate).
  • 402 - Payment required
    Questo stato non è ancora in uso, verrà implementato in futuro. È stato pensato per essere utilizzato in sistemi di pagamenti o micro-transazioni. Attualmente, solo la console di log del MacOs X genera uno stato di errore 402
  • 403 - Forbidden
    Il client è riuscito ad autenticarsi, ma il server rifiuta di rilasciare la risorsa perché risulta non autorizzato
  • 404 - Not found
    Il server non ha trovato nessuna risorsa richiesta dal client. È possibile che la risorsa torni disponibile in futuro, altrimenti si dovrebbe restituire il codice di stato 410
  • 405 - Method not allowed
    Il metodo utilizzato dal client non è permesso dal server
  • 406 - Not acceptable
    Il server ha accettato la richiesta, ma non è in grado di inviare una risposta perché nell'header è specificato un formato differente da quello che il server può fornire
  • 407 - Proxy Authentication required
    Simile al codice 401, con la differenza che il server richiede che il client si identifichi con il proxy, il quale dovrà restituire un header di autenticazione valido
  • 408 - Request timeouot
    Il client non ha prodotto una risposta entro i tempi in cui il server è configurato per aspettare. Il client potrà comunque ripetere la richiesta successivamente
  • 409 - Conflict
    Il server non può inviare la risorsa richiesta perché essa risulta in uno stato di conflitto. Esempio: La risorsa è in fase di modifica e non può essere letta
  • 410 - Gone
    La risorsa richiesta non è più disponibile sul server e non sono stati forniti indirizzi alternativi
  • 411 - Length required
    Il server si rifiuta di accettare la richiesta perché nell'header HTTP non è stato fornito il campo Content-Lenght
  • 412 - Precondition failed
    Il server non rispetta le condizioni che il client ha richiesto nell'header della richiesta
  • 413 - Request entity too large
    Il server si rifiuta di processare la richiesta perché il client ha richiesto una risorsa più grande di quanto il server possa elaborare
  • 414 - Request URI too long
    Il server si rifiuta di processare la richiesta perché il client ha richiesto una risorsa tramite un indirizzo più lungo di quanto il server possa supportare. È una condizione rara, in quanto ciò accada spesso quando una richiesta POST viene convertita in GET, facendo in modo che la richiesta URL sia notevolmente lunga
  • 415 - Unsupported media type
    Il server si rifiuta di processare la richiesta perché il client ha richiesto una risorsa con un formato non supportato
  • 416 - Requested range not satisfiable
    Il client ha richiesto una parte di risorsa, ma il server non può soddisfare la richiesta
  • 417 - Expectation failed
    Il server non può soddisfare i criteri richiesti nell'header della richiesta
  • 418 - I'm a teapot (RFC 2324)
    Nel 1998 venne introdotto questo stato come pesce d'aprile, ma oggigiorno NGIX comprende questo codice di stato mentre simula particolari operazioni sulle configurazioni
  • 420 - Enhance your claim (Standard Twitter)
    Questo stato è presente nelle API di Twitter. Viene restituito quando un client effettua troppe richieste
  • 422 - Unprocessable entity
    Il client ha effettuato una richiesta con una semantica errata
  • 423 - Locked
    La risorsa richiesta è attualmente bloccata
  • 424 - Failed dependency
    La richiesta fallisce a causa di una concatenazione di richieste fallite
  • 426 - Upgrade required
    Il client dovrebbe cambiare protocollo per lo scambio di dati. Esempio: si dovrebbe passare al protocollo TLS/1.0
  • 428 - Precondition required
    La richiesta presentata al server necessita di una condizione (If-Match) che il client non ha inserito nell'header
  • 429 - Too many requests
    Il client ha effettuato troppe richieste in un margine di tempo predefinito
  • 431 - Request header fields too large
    Nell'header della richiesta, il client ha inserito un valore troppo lungo
  • 444 - No response (Standard NGIX)
    Standard inserito su NGIX. Il server non concede alcuna informazione e chiude la connessione. Di solito succede quando il web server sospetta un attacco
  • 449 - Retry with (Standard Microsoft)
    La richiesta deve essere rieseguita purché vengano prima effettuate le azioni specificate
  • 450 - Blocked by Microsoft Parental Controls (Standard Microsoft)
    Il Microsoft Parental Control ha impedito l'accesso ad una risorsa in blacklist
  • 451 - Unavailable for legal reasons
    La risorsa richiesta è stata resa inaccessibile da un'azione governativa per censura o motivi legali
  • 499 - Client closed request (Standard NGIX)
    Il client ha chiuso la connessione prima che il server potesse inviare la risposta

5## - Errore lato Server

  • 500 - Internal server error
    Il server ha riscontrato un'errore generico durante l'elaborazione della richiesta
  • 501 - Not implemented
    Il server non riconosce il metodo con cui la richiesta è stata effettuata o non riesce a comprendere la sintassi della richiesta
  • 502 - Bad gateway
    Il server ha utilizzato sé stesso come gateway o come proxy ma non ha ricevuto risposta dalla risorsa richiesta
  • 503 - Service unavailable
    Il server è temporaneamente non disponibile per motivi di manutenzione o sovraccarico
  • 504 - Gateway timeout
    Il server ha utilizzato sé stesso come gateway o come proxy ma non ha ricevuto una risposta nei tempi previsti
  • 505 - HTTP version not supported
    Il server non supporta la versione del protocollo HTTP richiesta
  • 506 - Variant also negotiates (sperimentale)
    Il server presenta una errata configurazione e ciò causa una reazione a catena che impedisce di soddisfare la richiesta
  • 507 - Insufficient storage
    Il server non riesce a memorizzare la richiesta
  • 508 - Loop detected
    Il server ha riconosciuto che la richiesta è entrata in un circolo di re-indirizzamenti infiniti
  • 509 - Bandwidth limit exceeded (Standard Apache)
    Il web server Apache ha superato i limiti di banda impostati dall'amministratore, pertanto non può temporaneamente soddisfare alcuna richiesta
  • 510 - Not extended
    Il server non ha compreso il modo in cui il client richiede la risorsa, perciò rimanda indietro la richiesta per permettere al client di specificare i valori mancanti
  • 511 - Network authentication required
    Il client si deve autenticare in modo da ottenere l'accesso alla rete. Questo codice compare in situazioni in cui il server serva da proxy o gateway, per effettuare richieste di rete, come ad esempio hotspot wifi o portali interni
  • 598 - Network read timeout error
    Il server proxy non ha ricevuto la risorsa da trasmettere al client connesso in tempo
  • 599 - Network connect timeout error
    Stato simile al 548, con la differenza che il l'errore prevede un timeout nella connessione al network invece che nella lettura della risorsa