Frage

Also, wenn Sie sich das ansehen Liste der HTTP -Statuscodes, Es gibt wahrscheinlich eine Reihe von ihnen, die beim Programmieren nützlich wären. Der Server kann einige Dinge wie Protokolle behandeln, aber viele dieser Codes könnten nützlich sein, um dem Browser den tatsächlichen Status der Seite zu sagen.

Meine Frage ist also, mit welchen dieser Statuscodes wir uns befassen sollten? Welches sollten wir überprüfen und welche werden höchstwahrscheinlich nie in der regulären Anwendungsprogrammierung verwendet.

Wenn Sie neugierig sind, liegt dies im Rahmen der PHP -Programmierung, aber es würde wahrscheinlich auch für andere Sprachen gelten.

War es hilfreich?

Lösung

Viele davon sind bei der API-Verwendung von REST-Stil von Natur aus nützlich. Zum Beispiel:

  • 200 (OK): Sie haben um eine Ressource gefragt. Hier ist es!

  • 201 (erstellt): Sie haben mich gebeten, eine neue Ressource zu erstellen. Ich tat! Hier können Sie mich das nächste Mal danach fragen.

  • 202 (akzeptiert): Sie haben mich gebeten, etwas zu tun, aber es wird eine Weile dauern, also warte nicht auf. Hier können Sie den Status überprüfen.

  • 300 (mehrere Auswahlmöglichkeiten): Sie haben nach etwas gefragt, aber Sie waren nicht spezifisch genug. Welches meinst du?

  • 301 (dauerhaft bewegt): Sie haben um etwas gefragt, aber es ist jetzt woanders. Hier ging es.

  • 302 (gefunden): Sie haben um etwas gefragt, aber es ist für den Moment woanders. Hier ist es.

  • 304 (nicht modifiziert): Sie haben vorher um etwas gefragt, aber es hat sich nicht geändert, seit Sie mich das letzte Mal gefragt haben.

  • 400 (schlechte Anfrage): An dem, was Sie mich gebeten haben, stimmt etwas nicht. Beheben Sie, was Sie gesagt haben, und versuchen Sie es erneut.

  • 401 nicht Autorisiert): Sie müssen sich identifizieren, bevor ich diese Anfrage beenden kann. [Hinweis: Dies ist einer der leider genannten Header. Es sollte wirklich den Titel " Nicht authentifiziert; 403 ist eher wie Nicht autorisiert.]

  • 403 Verboten): Sie haben nach etwas gefragt, das Sie nicht haben dürfen.

  • 404 Nicht gefunden): Sie haben nach einer Ressource gefragt, aber es gibt keine, die Ihrer Beschreibung entspricht.

  • 500 (Serverfehler): Etwas ist schief gelaufen, also kann ich dir nicht geben, wonach du gerade gefragt hast. Das tut mir leid.

  • 501 (nicht implementiert): Ich unterstütze diese Art von Anfrage momentan nicht.

  • 503 Dienst nicht verfügbar): Ich kann momentan nicht auf Anfragen antworten.

Andere Tipps

Genauer gesagt, dies sind nur HTTP -Statuscodes, keine HTTP -Header. Header vermitteln viele Dinge und werden sowohl vom Client als auch vom Server gesendet und liegen außerhalb des Rahmens dieser Antwort.

Einer der HTTP -Header, nämlich der erste vom Server an den Client gesendete, sieht folgendermaßen aus:

HTTP/1.x 200 OK

oder:

HTTP/1.x 404 Not Found

Die Zahl, die nach dem Protokollidentifier erscheint HTTP/1.x ist der so genannte Statuscode mit der entsprechenden Statusnachricht, die danach gesendet wurde. Hier sind die Statuscodes, die ich in meinen PHP -Programmierzeiten verwenden musste:

  • 200 OK ist bei weitem am häufigsten. Es bedeutet, dass alles gut funktioniert hat und dass Sie mit Inhalten reagieren.
  • 404 Not Found wird vom Server automatisch unter bestimmten Bedingungen gesendet, insbesondere wenn die Anforderung zu einem ausführenden Skript führt, das auf dem Server nicht gefunden werden kann. Manchmal, insbesondere wenn Sie Frameworks schreiben, die URIs auf besondere Weise verarbeiten, möchten Sie einen 404 -Statuscode manuell festlegen. Zum Beispiel, wenn Sie ein zentrales Skript haben index.php Während Sie alle Anfragen mit .htaccess- oder Ihre Apache -Einstellungen weiterleiten, gibt Apache fast nie ein 404 von selbst zurück, da es schließlich gefunden hat index.php. Es wird jedoch eindeutig immer noch einige URIs geben, die Sie kommunizieren möchten, nirgendwohin, für die Sie Ihren eigenen 404 -Status -Header senden möchten.
  • 301 Moved Permanently und 302 Found (häufiger als "vorübergehend bewegt" bezeichnet). Diese beiden weisen den Browser an, nach einem zu suchen Location Header und um den Benutzer in die dort angegebene URL umzuleiten. Die meisten PHP -Frameworks haben ihre eigenen Funktionen für HTTP -Weiterleitungen, die auch mit den Headern umgehen. Der native PHP header('Location: http://www.google.com'); Ändert automatisch den HTTP -Status auf 302. Ich habe den Unterschied zwischen 302 und 301 nie wirklich verstanden, aber ich habe gelesen, dass 301 für die Optimierung der Suchmaschine viel besser ist. Deshalb versuche ich immer 301 zu verwenden. Vielleicht kann es jemand anderes können Erleuchten Sie, was der genaue Unterschied ist. Eine Sache, auf die Sie vorsichtig sind, ist es, zu vermeiden, einen Status- und Standort -Header von 301/302 auf eine Seite zu setzen, auf der Postdaten empfangen werden sollen. Ich hatte in der Vergangenheit Probleme damit.
  • 304 Not Modified wird normalerweise automatisch abhängig von Ihren Apache -Einstellungen gesendet. Die meisten Browser unter normalen Bedingungen enthalten das Datum/die Uhrzeit, an dem das angeforderte Element auf dem Computer des Benutzers zwischengespeichert wurde. ETAGS und andere Header werden für diesen Zweck verwendet. Wenn Apache nach diesem Zeitpunkt die entsprechende Datei des Servers nicht geändert hat, sendet Apache häufig eine 304 ohne Inhalt, wodurch der Client nur die Verwendung der zwischengespeicherten Version verwendet.
  • 401 Unauthorized wird gesendet, wenn ein Benutzer versucht, auf einen eingeschränkten Abschnitt auf der Website zugreifen zu können. Es gibt einige alte HTML -Funktionen und Servertechnologien, die native Benutzername/Kennwortanforderungen unterstützen, die 401 Statuscodes gesendet haben, wenn die Eingabeaufforderungen storniert oder nicht autorisiert wurden. Die meisten Menschen schreiben heutzutage ihre eigenen PHP -Implementierungen für Benutzerauthentifizierungs- und Rechteverwaltung, sodass Apache nicht oft 401s selbst sendet. Sie können den Status manuell senden, um anzuzeigen, dass mehr Rechte erforderlich sind, um auf die Seite zuzugreifen.
  • 400 Bad Request wird von Apache gesendet, wenn es eine Anfrage empfängt, die es nicht verstehen kann. Normalerweise müssen Sie sich keine Sorgen machen, es manuell zu senden.
  • 403 Forbidden wird von einigen Personen verwendet, wenn Benutzer versuchen, auf einen Bereich zuzugreifen, auf den sie nicht zugreifen können, selbst wenn sie möglicherweise aufgrund geografischer, IP- oder Verbotsbeschränkungen zugänglich sind. Ich benutze es selbst nicht und ich benutze nur 401 und 404, um es auszufüllen.
  • 5xx. Die 500er-Serie sind die Codes, die Sie als Entwickler wirklich nicht sehen können. Es bedeutet, dass Ihr Code oder Ihr Server etwas Schlimmes getan hat. Wenn Sie einen Server oder ein Lastausgleichssystem aus ausreichendem Kaliber haben und keine Fehler in Ihrem Code haben, werden Sie nie die 500er-Serie sehen.

Nun, das sind Statuscodes, keine Header, aber jeder von ihnen könnte nützlich sein (obwohl es unwahrscheinlich ist, dass die 5xx -Serie es ist).

Ich nehme an, über die Verwendung von Headers für das Servieren von Dateien oder zum Bereitstellen eines rastful -Webservice zu sprechen?

Sie wären dann eher nach Statuscodes als Header. Diejenigen, die ich allgemein verwendet habe, sind:

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

Natürlich können Sie für erholsame Webservices den Text so ändern, dass sie beschreibender sind und eine Beschreibung im Körper bereitstellen.

Dann gibt es:

418 I'm a teapot

Schnell durch diese Liste gehen (von Statuscodes), hier sind diejenigen, die ich oft benutze (Ich mache PHP-Webentwicklung als meinen Job) :

  • 200 OK : fast immer von Apache gesendet
  • 301 Moved Permanently : Im Allgemeinen von mir gesendet (oder von Apache, wenn sie um Neuschreiben von Rules verwendet werden)
  • 302 Found : Im Allgemeinen von mir gesendet (oder von Apache, wenn sie um Neuschreiben von Rules verwendet werden)
  • 304 Not Modified : Im Allgemeinen von Apache gesendet (oder einem umgekehrten Proxy davor)
  • 401 Unauthorized : Im Allgemeinen von Apache gesendet
  • 403 Forbidden : Im Allgemeinen von Apache gesendet
  • 404 Not Found : sowohl von Apache als auch mir gesendet - abhängig von den Situationen
  • 410 Gone : allgemein von mir gesendet
  • 500 Internal Server Error : sowohl von Apache als auch mir gesendet; Das ist derjenige, den ich im Allgemeinen verwende, wenn es einen "technischen" Fehler gibt - auch wenn es niemals passieren sollte ^^

Und hier sind die, die ich verwenden könnte (vor allem, wenn sie sich ausruhen) :

Diejenigen, die ich am meisten verwendet habe, sind:

  • 301 - dauerhaft bewegt - Verwenden Sie dies, wenn die Ressource dauerhaft in die neue URL verschoben wird.
  • 302 - vorübergehend bewegt - Verwenden Sie dies zum Umleiten, wenn Sie keine dauerhafte Umleitung haben können.
  • 404 Nicht gefunden. Ihr Server sollte so konfiguriert werden, dass dies für ungültige URLs bereitgestellt wird. Sie sollten diese in Ihren Protokollen überwachen-zu vielen 404S ist ein Zeichen für einen schlechten Druck.
  • 500 - Interner Serverfehler. Ihr Server sollte so konfiguriert werden, dass diese ordnungsgemäß gesendet werden, wenn Fehler vorliegen. Sie sollten 5xx -Fehler in Ihren Protokollen überwachen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top