Domanda

Quindi, se guardi il Elenco dei codici di stato HTTP, probabilmente ce ne sono alcuni che potrebbero essere utili durante la programmazione.Il server potrebbe gestire alcune cose, come i protocolli, ma molti di questi codici potrebbero essere utili per comunicare al browser lo stato effettivo della pagina.

Quindi, la mia domanda è: di quale di questi codici di stato dovremmo preoccuparci?Quali dovremmo controllare per inviare e quali molto probabilmente non verranno mai utilizzati nella normale programmazione delle applicazioni.

Se sei curioso, questo rientra nell'ambito della programmazione PHP, ma probabilmente si applicherebbe anche ad altri linguaggi.

È stato utile?

Soluzione

Molti di questi sono intrinsecamente utile con l'utilizzo REST-style API. Ad esempio:

  • 200 (OK): Hai chiesto una risorsa. Eccolo!

  • 201 (Creato): Mi hai chiesto di fare una nuova risorsa. L'ho fatto! Ecco dove si può andare a farmi una domanda per la prossima volta.

  • 202 (accettata): Mi hai chiesto di fare qualcosa, ma sta andando a prendere un po ', quindi non aspettare fino. Ecco dove si può andare a controllare lo stato.

  • 300 (scelte multiple): abbiamo chiesto qualcosa, ma non erano abbastanza specifici. Quale di questi volevi dire?

  • 301 (Spostato in modo permanente): Hai chiesto qualcosa, ma è da qualche altra ora. Ecco dove è andato.

  • 302 (Trovato): che avete chiesto qualcosa, ma è da qualche altra parte, per il momento. Eccolo.

  • 304 (Not Modified):. Hai chiesto qualcosa prima di questo, ma non è cambiato dall'ultima volta che mi hai chiesto

  • 400 (Richiesta non valida): C'è qualcosa di sbagliato su quello che mi ha chiesto di fare. Fix quello che hai detto e riprovare.

  • 401 (Unauthorized): Ho bisogno di identificare se stessi prima che io possa finire questa richiesta. [Nota: Questa è una delle intestazioni di più, purtroppo, di nome. E 'in realtà dovrebbe essere intitolato non autenticato ; 403 è più simile a non autorizzato .]

  • 403 (Forbidden). hai chiesto qualcosa che non è permesso di avere

  • 404 (Not Found):. Hai chiesto per una risorsa, ma non ce n'è uno che corrisponde alla tua descrizione

  • 500 (Errore del server): Qualcosa è andato storto, quindi non si può dare quello che hai chiesto in questo momento. Mi dispiace.

  • 501 (non implementato):. Io non supportano questo tipo di richiesta in questo momento

  • 503 (Servizio non disponibile):. non sono in grado di rispondere alle richieste in questo momento

Altri suggerimenti

Per essere più precisi, questi sono solo codici di stato HTTP, non intestazioni HTTP. Intestazioni trasmettono un sacco di cose e sono inviati sia dal client e il server, e sono oltre la portata di questa risposta.

Una delle intestazioni HTTP, vale a dire il primo inviato dal server al client, si presenta così:

HTTP/1.x 200 OK

o

HTTP/1.x 404 Not Found

Il numero che appare dopo l'identificatore HTTP/1.x protocollo è quello che viene chiamato il codice di stato con il messaggio di stato corrispondente inviato dopo di esso. Qui ci sono i codici di stato che ho avuto da usare nei miei giorni di programmazione PHP:

  • 200 OK è di gran lunga il più comune . Vuol dire che tutto ha funzionato bene e che si sta rispondendo con contenuti.
  • 404 Not Found viene inviato automaticamente dal server a determinate condizioni, in particolare quando la richiesta porta ad uno script in esecuzione che non può essere trovato sul server. A volte, soprattutto se si sta scrivendo quadri che trattano URI in modo particolare, si vuole impostare manualmente un codice di stato 404. Ad esempio, se si dispone di una esecuzione dello script index.php centrale attraverso mentre si itinerario tutte le richieste utilizzando .htaccess o le impostazioni di Apache, Apache saranno quasi mai restituire un 404 di propria iniziativa perché, dopo tutto, ha trovato index.php. Ma è chiaro, ci saranno ancora alcuni URI che si desidera comunicare non portano ovunque, per il quale si desidera inviare la vostra propria intestazione 404 di stato.
  • 301 Moved Permanently e 302 Found (più comunemente riferimento come 'spostato temporaneamente'). Questi due istruire il browser per cercare un colpo di testa Location e per reindirizzare l'utente all'URL specificato lì. La maggior parte dei framework PHP hanno le proprie funzioni per i reindirizzamenti HTTP, che gestiscono anche le intestazioni. Il nativo di PHP reindirizzamento header('Location: http://www.google.com'); cambia automaticamente lo stato HTTP a 302. Non ho mai capito a fondo la differenza tra 302 e 301, ma ho letto che 301 è molto meglio per Search Engine Optimization, così cerco di usare sempre 301 . Forse qualcun altro può illuminarmi su quale sia la differenza esatta. Una cosa da stare attenti è quello di evitare di mettere uno status 301/302 e intestazione posizione su una pagina che è destinato a ricevere i dati POST. Ho avuto qualche problema con esso in passato.
  • 304 Not Modified di solito è inviato automaticamente a seconda le impostazioni di Apache. La maggior parte dei browser in condizioni normali includono la data / ora in cui l'elemento richiesto è stato memorizzato nella cache del computer dell'utente. ETags e altre intestazioni sono utilizzati per questo scopo. Se i giudici Apache che file corrispondente del server non è cambiato da allora, Apache spesso inviare un 304 senza contenuto, che dice solo al client di utilizzare la versione in cache.
  • 401 Unauthorized viene inviato quando un utente è cercando di accedere a una sezione ristretta sul sito web. Ci sono alcune caratteristiche antiche HTML e tecnologie server che supportano native richieste nome utente / password, che ha inviato 401 codici di stato quando le richieste sono state annullate o non autorizzati. La maggior parte delle persone in questi giorni scrivono le loro implementazioni PHP per l'autenticazione dell'utente e la gestione dei diritti, in modo Apache non invia spesso 401S di propria iniziativa. È possibile inviare manualmente lo stato per indicare che più ricombatte sono necessari per accedere alla pagina.
  • 400 Bad Request viene inviato da Apache se riceve una richiesta che non può capire. Di solito non si deve preoccupare di inviare manualmente.
  • 403 Forbidden viene utilizzato da alcune persone quando gli utenti stanno cercando di accedere a una zona che non sarebbero in grado di accedere, anche con l'autenticazione corretta, forse a causa di geografica, IP, o vietare restrizioni. Io non uso io stesso, e mi basta usare 401 e 404 da compilare.
  • 5xx . Il 500-series sono i codici che davvero non fare per vedere come sviluppatore. Significa che il codice o server ha fatto qualcosa di brutto. Se si dispone di un sistema di bilanciamento del carico di calibro sufficiente server o e non avere errori nel codice, non avrai mai vedere il 500-series.

Beh, quelli sono i codici di stato, non le intestazioni, ma nessuno di loro potrebbe essere utile (anche se la serie 5xx è improbabile che siano).

La prendo il vostro parlare utilizzando le intestazioni sia per servire i file o fornire un webservice RESTful?

Si sarebbe dopo codici di stato, piuttosto che le intestazioni poi. Quelli che ho comunemente usati sono:

200 OK
301 Moved Permanently
302 Found (temporary redirect)
400 Bad Request
403 Forbidden
404 Not found
500 Internal Server Error

Naturalmente, per webservices RESTful è possibile modificare il testo per essere più descrittivo, oltre a fornire descrizione nel corpo.

Poi c'è:

418 I'm a teapot

Scorrendo rapidamente l'elenco (dei codici di stato), ecco quelli che uso spesso (Il mio lavoro è lo sviluppo web PHP) :

  • 200 OK :quasi sempre inviato da Apache
  • 301 Moved Permanently :generalmente inviato da me (o da Apache, quando si utilizzano le regole di riscrittura)
  • 302 Found :generalmente inviato da me (o da Apache, quando si utilizzano le regole di riscrittura)
  • 304 Not Modified :generalmente inviato da Apache (o da un proxy inverso di fronte ad esso)
  • 401 Unauthorized :generalmente inviato da Apache
  • 403 Forbidden :generalmente inviato da Apache
  • 404 Not Found :inviato sia da Apache che da me, a seconda delle situazioni
  • 410 Gone :generalmente inviato da me
  • 500 Internal Server Error :inviato sia da Apache che da me;questo è quello che generalmente utilizzo quando si verifica un errore "tecnico" -- anche se non dovrebbe mai accadere ^^

Ed ecco quelli che potrei usare (soprattutto se si fa REST) :

Quelli che ho usato di più sono:

  • 301 - Spostato permanentemente: utilizzalo se la risorsa viene spostata permanentemente nel nuovo URL.
  • 302 - Spostato temporaneamente: utilizzalo per il reindirizzamento quando non è possibile avere un reindirizzamento permanente.
  • 404 non trovato.Il tuo server dovrebbe essere configurato per servire questo per URL non validi.Dovresti monitorarli nei tuoi registri: troppi 404 sono un segno di un push negativo.
  • 500 - Errore interno del server.Il tuo server dovrebbe essere configurato per inviarli correttamente quando si verificano errori.Dovresti monitorare gli errori 5xx nei tuoi log.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top