HTTP-Statuscodes
Ich möchte alles richtig machen und alle Möglichkeiten ausschöpfen, daher interessiere ich mich auch für die verschiedenen Statuscodes, die man auf Webseiten verwenden kann.
Vorteile
- Ein falscher Statuscode kann bewirken, dass Zwischenspeicher (Caches) im Browser oder in Proxys Seiten speichern, die sie gar nicht speichern sollten.
- Suchmaschinen wie Google lassen sich zum Teil mit Statuscodes beeinflussen.
- Link-
Checker sind nutzlos, wenn deine Website immer "200 OK" zurückliefert. - In Logfiles ist der Statuscode oft die einzige Information über das Vorliegen einer Fehlersituation.
- Auch wenn ein Kunde von dir über ein Skript Daten von deinem Webserver abruft, kann die Verwendung passender Statuscodes sinnvoll zur Fehleranalyse sein.
- Sauberes und überlegtes Arbeiten bringt oft Vorteile, an die man zunächst gar nicht dachte. Das ist meine allgemeine Erfahrung in der Web-
Entwicklung und Softwareentwicklung.
Anregungen
Nicht alle Statuscodes werden in der Praxis verwendet. Manche braucht man nicht zu beachten, weil sie der Webserver von selbst einsetzt, wo sie eingesetzt werden sollten. Für einige andere Statuscodes halte ich es jedoch für durchaus überlegenswert, sie in eigenen Webseiten-
Statuscode | Verwendung | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
202 Accepted | Verwende ich für Seiten, die irgendeinen Prozess, Datenbank-203 Non- | Wollte ich dafür verwenden, wenn eine Seite aus einem Cache kommt während der eigentliche Server gerade nicht verfügbar ist. Allerdings reagieren Browser und sogar Anwendungen wie Validierungsseiten empfindlich darauf, zumindest bei XML- | 204 No Content
| Wenn der Client die Verbindung abgebrochen hat, brauche ich auch kein komplexes PDF oder dgl. erstellen. Indem ich diesen Statuscode verwende, kann ich nachher in der Logfile- | 300 Multiple Choices
|
| Wenn jemand eine Seite aufruft, die es (noch) nicht gibt, aber ähnlich lautende Seiten sind vorhanden, dann kann dieser Statuscode passend sein. Es sollte dann eine Liste dieser ähnlichen Seitenadressen ausgegeben werden, wovon der Benutzer eine anklicken kann. Der Apache- Ich mache das auf dieser Website derzeit nur in dem Fall, dass jemand versucht, z. B. von https://sedl.at/Erkenntnisgewinnung/wissenschaftlich nach https://sedl.at/Erkenntnisgewinnung zu navigieren – diese Seite gibt es (noch) nicht. Ebenso könnte ich es machen, wenn jemand https://sedl.at/Kritik aufruft – die Seite gibt es nicht, aber mehrere, die "Kritik" in der Adresse enthalten. In der Praxis hat der Statuscode kaum einen Vorteil gegenüber "404 Nicht gefunden" (siehe unten) und wird daher sehr selten verwendet. Ich verwende ihn zwar, aber gebe dem Benutzer eine "Nicht gefunden"- 301 Moved Permanently
| Diesen Statuscode musst du verwenden, wenn Google die aufgerufene Adresse nicht in den Index aufnehmen soll, sondern ausschließlich die Seite, an die du hiermit weiterleitest.
| 302 Moved Temporarily
| Das ist auf Webservern i. A. der Standard für Weiterleitungen.
| 304 Not Modified
| Wird für statische Seiten vom Webserver automatisch verwendet. Bei Seiten, die dein Skript zur Laufzeit generiert, musst du selbst ein bisschen programmieren, wenn du deinen Besuchern unnötige Wartezeiten ersparen und Google gefallen willst.
| 400 Bad Request
| Z. B. für Seiten, die Parameter erwarten, welche in der Adresse nicht enthalten sind
| 403 Forbidden
|
| Zugriff verweigert Verwende ich auch, wenn ich eine Sofortnachricht ablehne, weil ich vermute, dass sie Spam ist. 404 Not Found
| Auch sinnvoll z. B. auf einer Seite, die aus einer Datenbank Details zu einem Objekt abrufen soll, das es gar nicht gibt
| 408 Request Time- | Wird in der Praxis kaum verwendet. Passend wäre es für Seiten, die nur eingeloggte Benutzer sehen dürfen. Wenn der Benutzer zu lange inaktiv war und daher ausgeloggt wurde, kann dieser Statuscode verwendet werden. Es sollte dann – ohne dass sich die Adresse im Browser ändert – die Aufforderung zum neuen Einloggen kommen. Wegen des Statuscodes wird die Seite vom Browser nicht zwischengespeichert.
| 409 Conflict
| Verwende ich auf Seiten, wenn in der Adresse verschiedene Parameter übergeben wurden, die sich einander widersprechen.
| 410 Gone
| Damit kann man Google mitteilen, dass es keinen Zweck hat, eine Seite immer wieder aufzurufen versuchen, da die Seite dauerhaft gelöscht wurde.
| 500 Internal Server Error
| Wenn ein Skript einen Fehler zwar abfangen, aber nicht das Gewünschte zurückliefern konnte (z. B. weil die Datenbank gerade nicht erreichbar ist)
| 501 Not Implemented
| Passt auch für Serveranwendungen, die etwas (noch) nicht können.
| 502 Bad Gateway
| Abruf vom Original- | 504 Gateway Time- | Der Original- | |
Der Statuscode ersetzt selbstverständlich nicht eine Fehlerseite, die den Fehler beschreibt und gemeinsam mit dem Statuscode ausgeliefert wird.
Weiter
Weblinks
- Offizielle Spezifikation (englisch)
- englische Wikipedia:
- Liste mit Erweiterungen diverser Hersteller
- HTTP 451 – Dieser Statuscode wird eingesetzt, wenn der Zugriff auf eine Seite aus rechtlichen Gründen blockiert wurde (Zensur).
- Kommentierte Liste von HTTP-
Statuscodes (englisch) – Die einzige Seite, die ich fand, als ich 2004 danach suchte, welche Statuscodes in der Praxis tatsächlich verwendet werden. Nicht in allen Punkten stimme ich dem Autor dieser Seite zu.