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".

Image
Esempio di una pagina web che è stata inviata da un server web oltre al codice di stato 404.

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

link internet

Evidenze individuali

  1. RFC 2616 - Protocollo di trasferimento ipertestuale - HTTP / 1.1
  2. RFC 2518
  3. RFC 8297
  4. ^ Roy Fielding, Julian Reschke: 6.3.4 - Semantica e contenuto . RFC 7231 - Protocollo di trasferimento ipertestuale (HTTP / 1.1), giugno 2014
  5. ^ Roy Fielding, Julian Reschke: 5.7.2 - Trasformazioni . RFC 7230 - Sintassi e routing dei messaggi , giugno 2014
  6. ^ RFC 1945
  7. Julian Reschke: RFC 7538 - The Hypertext Transfer Protocol Status Code 308 (Reindirizzamento permanente), IETF , aprile 2015.
  8. a b c d Estensioni HTTP RFC 4918 per la creazione e il controllo delle versioni Web distribuiti (WebDAV)
  9. RFC 8470
  10. RFC 7231 . Hypertext Transfer Protocol (HTTP/1.1): semantica e contenuto. Sezione 6.5.15.
  11. RFC 2817 . L'aggiornamento a TLS all'interno di HTTP / 1.1.
  12. a b c d RFC 6585 Codici di stato HTTP aggiuntivi
  13. Un nuovo codice di stato HTTP per le risorse soggette a restrizioni legali
  14. tools.ietf.org
  15. datatracker.ietf.org
  16. Appendice A
  17. un b iana.org
  18. Errore 418 Sono una teiera . È iniziato nel 1998, descritto nella RFC 2324 del 1998.
  19. Prenotazione del codice di stato HTTP 418 draft-nottingham-thanks-larry-00
  20. w3.org W3C PEP (Bozza di lavoro 21 novembre 1997)
  21. Blog del team di supporto delle specifiche Microsoft Open su MSDN . Estratto il 2 marzo 2016
  22. RFC 2295
  23. RFC 2774
  24. Ad esempio, LinkedIn consegna quando si accede tramite curlil codice 999: curl -kI https://www.linkedin.com/company/linkedin/( vedi stackoverflow )