Mario Sedlak
Computer
Hauptthemen

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

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-Skripts zurückzuliefern bzw. den Webserver entsprechend zu konfigurieren.

Statuscode Verwendung
202 Accepted Verwende ich für Seiten, die irgendeinen Prozess, Datenbank-Job oder dgl. starten, ohne zu warten, bis er fertig ist
203 Non-Authoritative Information 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-Seiten. Sie erwarten "200 OK".
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-Analyse feststellen, wie oft das vorkommt. Wenn ich wissen will, wie lange die PDF-Erstellung im Durchschnitt dauert, beschränke ich mich auf die Logfile-Einträge mit "200 OK".
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-Webserver scheint es so zu machen.

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"-Meldung mit Zusatzinformationen. Man muss natürlich aufpassen, dass damit Hacker nicht Verzeichnisinhalte erfahren, die sie nicht wissen sollten.

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-Out 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-Server schlug fehl und es ist auch keine Kopie der gewünschten Seite im Cache.
504 Gateway Time-Out Der Original-Server antwortet nicht und es ist auch keine Kopie der gewünschten Seite im Cache.

Der Statuscode ersetzt selbstverständlich nicht eine Fehlerseite, die den Fehler beschreibt und gemeinsam mit dem Statuscode ausgeliefert wird.

Weiter

FTP

Weblinks

Seite erstellt am 6.1.2009 – letzte Änderung am 14.1.2022