Codice di stato HTTP
Un codice di stato HTTP viene fornito da un server come risposta a ogni richiesta HTTP . Un client come un browser web è sul lato richiedente . Il server utilizza il codice di stato HTTP per informare il client se la richiesta è stata elaborata correttamente. In caso di errore, il codice di stato fornisce informazioni su dove (ad esempio tramite una deviazione) o come (ad esempio con autenticazione ) può ottenere le informazioni desiderate. I più noti sono i codici 404: "Non trovato", 403: "Mancata autorizzazione all'accesso" e 400: "Richiesta errata".
La prima cifra di un codice di stato rappresenta la classe di stato e sono specificati in RFC 7231 (sostituisce RFC 2616 ), così come RFC 2518 , RFC 2817 , RFC 2295 , RFC 2774 e RFC 4918 . Alcuni appartengono a Distributed Authoring (WebDAV) .
Oltre ai codici di stato standardizzati in RFC , alcuni produttori di software utilizzano anche codici proprietari per messaggi di stato e di errore appositamente definiti. Altri software possono visualizzare questi codici all'utente solo come errori sconosciuti generali; ma non una traduzione e istruzioni su come procedere. In alcuni casi, i server possono già dedurre dalle circostanze che circondano la richiesta che è coinvolto il software speciale associato e solo allora restituire i codici proprietari. Alcuni codici proprietari sono elencati in questo articolo ed etichettati di conseguenza.
Elenco dei codici di stato HTTP
1xx - informazioni
La richiesta è ancora in fase di elaborazione.
| codice | Messaggio | importanza |
|---|---|---|
| 100 | Continua | La richiesta corrente al server non è stata ancora rifiutata. (viene utilizzato in connessione con il campo di intestazione "Aspetta 100 continua".) Il client può ora continuare con la richiesta potenzialmente molto grande. |
| 101 | Protocolli di commutazione | Viene utilizzato quando il server ha ricevuto una richiesta con il campo di intestazione "Upgrade" impostato e accetta di passare a un altro protocollo. Questo codice di stato viene utilizzato, ad esempio, quando si passa da HTTP a WebSocket . |
| 102 | in lavorazione | Utilizzato per evitare un timeout mentre il server sta elaborando una richiesta che richiede molto tempo. Questa è una risposta provvisoria che deve essere seguita da una risposta finale sulla stessa connessione senza ulteriori richieste del client. |
| 103 | Primi suggerimenti | Utilizzato insieme all'intestazione "Link" per consentire il precarico delle risorse mentre il server sta preparando la risposta finale. |
2xx - Operazione riuscita
La richiesta è andata a buon fine, la risposta può essere utilizzata.
| codice | Messaggio | importanza |
|---|---|---|
| 200 | ok | La richiesta è stata elaborata con successo e il risultato della richiesta viene trasmesso nella risposta. |
| 201 | Creato | La richiesta è stata elaborata con successo. La risorsa richiesta è stata creata prima dell'invio della risposta. Il campo di intestazione "Località" può contenere l'indirizzo della risorsa creata. |
| 202 | Accettato | La richiesta è stata accolta, ma verrà evasa in un secondo momento. Il successo della richiesta non può essere garantito. |
| 203 | Informazioni non autorevoli | Il server agisce come un " proxy di trasformazione ", ha ricevuto una risposta di 200 OK dalla fonte e risponde con un documento modificato dalla fonte. |
| 204 | Nessun contenuto | La richiesta è stata eseguita con successo, ma la risposta volutamente non contiene alcun dato. |
| 205 | Reimposta contenuto | La richiesta è stata eseguita con successo; il client dovrebbe ricostruire il documento e reimpostare le voci del modulo. |
| 206 | Contenuto parziale | La parte richiesta è stata trasmessa con successo (viene utilizzata in connessione con un campo di intestazione "Content-Range" o il tipo di contenuto multipart / byterange). Può informare un client di download parziali (utilizzato da Wget , ad esempio , per monitorare l'avanzamento del download o per suddividere un download in più flussi). |
| 207 | Multi-stato | WebDAV RFC 4918 - La risposta contiene un documento XML specificato in WebDAV, che contiene diversi codici di stato per operazioni eseguite in modo indipendente. |
| 208 | Già segnalato | WebDAV RFC 5842 - I membri di un'associazione WebDAV sono stati precedentemente enumerati e non sono più presenti in questa richiesta. |
| 226 | Io sono abituato | RFC 3229 - Il server ha soddisfatto una richiesta GET per la risorsa, la risposta è una rappresentazione del risultato di una o più manipolazioni dell'istanza relative all'istanza corrente. |
3xx - reindirizzamento
Per garantire che la richiesta venga elaborata correttamente, sono necessari ulteriori passaggi da parte del cliente.
| codice | Messaggio | importanza |
|---|---|---|
| 300 | Scelte multiple | La risorsa richiesta è disponibile in diversi modi. La risposta contiene un elenco dei tipi disponibili. Il campo di intestazione "Località" può contenere l'indirizzo della rappresentazione preferita dal server. |
| 301 | Trasferito | La risorsa richiesta è immediatamente disponibile all'indirizzo specificato nel campo di intestazione "Località" (chiamato anche reindirizzamento). Il vecchio indirizzo non è più valido. |
| 302 | Trovato ( spostato temporaneamente ) | La risorsa richiesta è temporaneamente disponibile all'indirizzo specificato nel campo di intestazione "Località". Il vecchio indirizzo rimane valido. I browser di solito seguono con un GET, anche se la richiesta originale era un POST. Viene sostituito in HTTP/1.1 dai codici di stato 303 o 307 a seconda dell'applicazione. Il reindirizzamento 302 è stato preso di mira a causa di un bug del motore di ricerca chiamato URL hijacking . |
| 303 | Vedi altro | La risposta alla domanda può essere ottenuta dall'indirizzo fornito nel campo di intestazione "Località". Il browser dovrebbe seguire con un GET, anche se la richiesta originale era un POST. |
| 304 | Non modificato | Il contenuto della risorsa richiesta non è cambiato dall'ultima query del client e quindi non viene trasferito. Per i dettagli, vedere Confronto tra versioni cache del browser . |
| 305 | Usa un proxy | La risorsa richiesta è raggiungibile solo tramite proxy. Il campo di intestazione "Località" contiene l'indirizzo del proxy. |
| 306 | (riservato) | 306 non è più utilizzato, ma è riservato. È stato utilizzato per "Cambia proxy". |
| 307 | Reindirizzamento temporaneo | La risorsa richiesta è temporaneamente disponibile all'indirizzo specificato nel campo di intestazione "Località". Il vecchio indirizzo rimane valido. Il browser dovrebbe seguire usando lo stesso metodo della richiesta originale (cioè un POST è seguito da un POST). Questa è la principale differenza rispetto a 302/303. |
| 308 | Reindirizzamento permanente | La risorsa richiesta è immediatamente disponibile all'indirizzo indicato nel campo di intestazione "Località", il vecchio indirizzo non è più valido. Il browser dovrebbe seguire lo stesso metodo della richiesta originale (cioè un POST è seguito da un POST). Questa è la principale differenza rispetto a 301. |
4xx - errore del cliente
La causa del fallimento della richiesta è (più) a carico del cliente.
| codice | Messaggio | importanza |
|---|---|---|
| 400 | Brutta richiesta | Il messaggio di richiesta è stato strutturato in modo errato. |
| 401 | non autorizzato | La richiesta non può essere effettuata senza un'autenticazione valida. La modalità di esecuzione dell'autenticazione viene trasmessa nel campo di intestazione "WWW-Authenticate" della risposta. |
| 402 | Pagamento richiesto | Tradotto: pagamento richiesto. Questo stato è riservato ai futuri protocolli HTTP. |
| 403 | Vietato | La richiesta non è stata eseguita a causa di un'autorizzazione insufficiente del client, ad esempio perché l'utente autenticato non è autorizzato o un URL configurato come HTTPS è stato chiamato solo con HTTP. |
| 404 | Non trovato | La risorsa richiesta non è stata trovata. Questo codice di stato può essere utilizzato anche per rifiutare una richiesta senza ulteriori motivi. I link che fanno riferimento a tali pagine di errore sono anche conosciuti come link morti . |
| 405 | operazione non permessa | La richiesta può essere effettuata solo utilizzando altri metodi HTTP (ad esempio GET invece di POST). I metodi validi per la relativa risorsa vengono trasmessi nel campo di intestazione "Consenti" della risposta. |
| 406 | Non accettabile | La risorsa richiesta non è disponibile nella forma desiderata. Nella risposta possono essere trasmessi valori "Content-Type" validi. |
| 407 | Autenticazione proxy richiesta | Come con il codice di stato 401, il client deve prima essere autenticato rispetto al proxy utilizzato. La modalità di esecuzione dell'autenticazione è trasmessa nel campo di intestazione "Proxy-Authenticate" della risposta. |
| 408 | Richiedi timeout | Non è stata ricevuta una richiesta completa dal client entro il tempo consentito dal server. |
| 409 | Conflitto | La richiesta è stata formulata sotto false ipotesi. Nel caso di una richiesta PUT, ciò può essere dovuto, ad esempio, a una modifica della risorsa da parte di terzi. |
| 410 | Andato | La risorsa richiesta non è più fornita ed è stata rimossa in modo permanente. |
| 411 | Lunghezza richiesta | La richiesta non può essere elaborata senza un campo di intestazione "Content-Length". |
| 412 | Precondizione fallita | Un requisito trasferito nella richiesta, ad esempio sotto forma di un campo di intestazione "If-Match", non si applicava. |
| 413 | Carico utile troppo grande | La richiesta era troppo grande per essere elaborata dal server. Un campo di intestazione "Retry-After" nella risposta può indicare al client che la richiesta potrebbe essere elaborata in un secondo momento. |
| 414 | URI troppo lungo | L'URL della richiesta era troppo lungo. La causa è spesso un ciclo infinito di reindirizzamenti. |
| 415 | Tipo di supporto non supportato | Il contenuto della richiesta è stato inviato con un tipo di media non valido o vietato. |
| 416 | Gamma non soddisfacente | La parte richiesta di una risorsa non era valida o non è disponibile sul server. |
| 417 | Aspettativa fallita | Utilizzato insieme a un campo di intestazione "Aspetta". Il comportamento del server richiesto nel campo di intestazione "Aspettati" non può essere soddisfatto. |
| 421 | Richiesta errata | La richiesta è stata inviata a un server che non è in grado di inviare una risposta. Introdotto in HTTP / 2 . |
| 422 | Entità non processabile | Utilizzato quando la restituzione del codice di stato 415 o 400 non sarebbe giustificata, ma l'elaborazione della richiesta viene rifiutata, ad esempio a causa di errori semantici . |
| 423 | bloccato | La risorsa richiesta è attualmente bloccata. |
| 424 | Dipendenza fallita | La richiesta non può essere eseguita perché richiede l'esito positivo di un'altra richiesta. |
| 425 | Troppo presto | Il server chiede al client di inviare nuovamente la richiesta perché la connessione TLS non è stata ancora completamente stabilita. Questo serve per prevenire un attacco di replay . |
| 426 | Aggiornamento richiesto | Il server richiede al client di ripetere la richiesta utilizzando un protocollo diverso. Un caso d'uso è il passaggio a HTTP con Transport Layer Security. |
| 428 | Prerequisito richiesto | Non tutti i presupposti per la richiesta erano soddisfatti. Questo codice di stato ha lo scopo di prevenire i problemi causati dalle condizioni di gara mediante manipolazione o cancellazione che si verificano solo se il client lo richiede sulla base di una risorsa corrente (ad esempio fornendo un'intestazione ETag corrente ). |
| 429 | Troppe richieste | Il client ha inviato troppe richieste in un determinato periodo di tempo. |
| 431 | Campi dell'intestazione della richiesta troppo grandi | È stata superata la lunghezza massima di un campo di intestazione o dell'intera intestazione. |
| 451 | Non disponibile per motivi legali | Questo codice di stato ha lo scopo di indicare che la risorsa richiesta non è disponibile a causa di normative legali (restrizioni del copyright, censura, ecc., possibilmente limitate a un determinato paese). E 'stato presentato alla IETF per dipendente di Google Tim Bray nel giugno 2012 ed è stato accettato dal 17 dicembre 2015. Bray ha suggerito il numero 451 in riferimento al romanzo Fahrenheit 451 di Ray Bradbury e ha aggiunto un ringraziamento all'autore. |
| Esempi di altri codici non elencati nell'Hypertext Transfer Protocol (HTTP) Status Code Registry a partire da luglio 2020 : | ||
| 418 | sono una teiera | Questo codice deve essere inteso come uno scherzo del pesce d'aprile per l' IETF . All'interno di un protocollo scherzoso per la preparazione del caffè, l' Hyper Text Coffee Pot Control Protocol , indica che è stata erroneamente utilizzata una teiera al posto della caffettiera . Questo codice di stato scherzo può essere trovato su alcuni siti Web, sebbene non faccia parte di HTTP né sia definito nel registro dei codici di stato . Deve essere elencato come "riservato" in futuro. |
| 420 | Politica non soddisfatta | Nel W3C PEP (Working Draft 21 novembre 1997) viene proposto quel codice per segnalare che una condizione non è stata soddisfatta. |
| 444 | Nessuna risposta | Utilizzato nei log di nginx per indicare che il server non ha inviato alcuna informazione al client e ha chiuso la connessione. |
| 449 | La richiesta deve essere ritentata dopo aver eseguito l'azione appropriata | Utilizzato nelle risposte da Microsoft Exchange Server . |
| 499 | Richiesta chiusa del cliente | Un codice di stato non standard introdotto da nginx nel caso in cui un client chiuda la connessione mentre nginx sta elaborando la richiesta. |
5xx - errore del server
Non deve essere chiaramente differenziato dai cosiddetti errori del cliente . Tuttavia, la causa del fallimento della richiesta è più responsabilità del server.
| codice | Messaggio | importanza |
|---|---|---|
| 500 | Errore interno del server | Questo è un "codice di stato collettivo" per errori imprevisti del server. |
| 501 | Non implementato | La funzionalità per elaborare la richiesta non è fornita da questo server. La causa è, ad esempio, un metodo HTTP sconosciuto o non supportato. |
| 502 | Gateway difettoso | Il server non ha potuto svolgere la sua funzione di gateway o proxy perché ha ricevuto una risposta non valida. |
| 503 | Servizio non disponibile | Il server è temporaneamente non disponibile, ad esempio a causa di sovraccarico o lavori di manutenzione. Un campo di intestazione "Retry-After" nella risposta può indicare al client un momento in cui la richiesta potrebbe essere elaborata. |
| 504 | Timeout del gateway | Il server non ha potuto svolgere la sua funzione di gateway o proxy perché non ha ricevuto una risposta dai server o dai servizi che stava utilizzando entro un determinato periodo di tempo. |
| 505 | Versione HTTP non supportata | La versione HTTP utilizzata (ovvero il numero davanti al punto) non è supportata o rifiutata dal server. |
| 506 | Variante anche in trattativa | L' accordo sul contenuto della richiesta si traduce in un rinvio circolare . |
| 507 | Spazio insufficiente | Non è stato possibile elaborare la richiesta perché al momento non è disponibile spazio di archiviazione sufficiente sul server. |
| 508 | Rilevato loop | L'operazione non è stata eseguita perché l'esecuzione sarebbe andata in loop per sempre. Definito nell'estensione di associazione per WebDAV secondo RFC 5842 , poiché le associazioni possono creare percorsi ciclici alle risorse WebDAV. |
| 509 | limite di larghezza di banda superato | La richiesta è stata respinta perché altrimenti sarebbe stata superata la banda disponibile (espansione non ufficiale di alcuni server). |
| 510 | Non esteso | La richiesta non contiene tutte le informazioni che l'estensione del server richiesta necessariamente si aspetta. |
| 511 | Autenticazione di rete richiesta | Il client deve prima autenticarsi per poter accedere alla rete. |
9xx - Errori proprietari
Alcuni produttori di software utilizzano l'intervallo da 900 per i codici di stato proprietari . Questa gamma di numeri non è mai stata menzionata nei documenti RFC ed è ovviamente al di là dei codici standardizzati. Ciò lo rende facile da identificare come un caso speciale.
Guarda anche
- Pagina di errore
- Protocollo di trasferimento ipertestuale
- Intestazione
- Elenco dei campi di intestazione HTTP
link internet
- Registro del codice di stato dell'Hypertext Transfer Protocol (HTTP) sul sito web della IANA
- Codici di stato e sottocodici di Microsoft Internet Information Server su support.microsoft.com
- Definizioni del codice di stato di Adobe Flash (ad es. 408) ( Memento datato 30 gennaio 2010 su Internet Archive ) sul sito Web di Adobe Inc.
- apache-status-code-headers su askapache.com
- Roy Fielding, Julian Reschke: Sezione 6.3.4 - Codici stato risposta . RFC 7231 - Protocollo di trasferimento ipertestuale (HTTP / 1.1), IETF , giugno 2014
Evidenze individuali
- ↑ RFC 2616 - Protocollo di trasferimento ipertestuale - HTTP / 1.1
- ↑ RFC 2518
- ↑ RFC 8297
- ^ Roy Fielding, Julian Reschke: 6.3.4 - Semantica e contenuto . RFC 7231 - Protocollo di trasferimento ipertestuale (HTTP / 1.1), giugno 2014
- ^ Roy Fielding, Julian Reschke: 5.7.2 - Trasformazioni . RFC 7230 - Sintassi e routing dei messaggi , giugno 2014
- ^ RFC 1945
- ↑ Julian Reschke: RFC 7538 - The Hypertext Transfer Protocol Status Code 308 (Reindirizzamento permanente), IETF , aprile 2015.
- ↑ a b c d Estensioni HTTP RFC 4918 per la creazione e il controllo delle versioni Web distribuiti (WebDAV)
- ↑ RFC 8470
- ↑ RFC 7231 . Hypertext Transfer Protocol (HTTP/1.1): semantica e contenuto. Sezione 6.5.15.
- ↑ RFC 2817 . L'aggiornamento a TLS all'interno di HTTP / 1.1.
- ↑ a b c d RFC 6585 Codici di stato HTTP aggiuntivi
- ↑ Un nuovo codice di stato HTTP per le risorse soggette a restrizioni legali
- ↑ tools.ietf.org
- ↑ datatracker.ietf.org
- ↑ Appendice A
- ↑ un b iana.org
- ↑ Errore 418 Sono una teiera . È iniziato nel 1998, descritto nella RFC 2324 del 1998.
- ↑ Prenotazione del codice di stato HTTP 418 draft-nottingham-thanks-larry-00
- ↑ w3.org W3C PEP (Bozza di lavoro 21 novembre 1997)
- ↑ Blog del team di supporto delle specifiche Microsoft Open su MSDN . Estratto il 2 marzo 2016
- ↑ RFC 2295
- ↑ RFC 2774
-
↑ Ad esempio, LinkedIn consegna quando si accede tramite
curlil codice 999:curl -kI https://www.linkedin.com/company/linkedin/( vedi stackoverflow )