Die HTTP-Statuscodes – eine Einführung

zurück zum Blog

Um eine Webseite aufzurufen, tippt der User eine URL in die Adresszeile des Webrowsers ein und drückt die Return-Taste. Der Browser sendet daraufhin eine Anfrage an den Server der gewünschten Webseite und fordert die zur Darstellung der Seite notwendigen Daten an. Diese Anfragen geschehen nach Regeln, welche die Kommunikation zwischen Webbrowser und Server genau festlegen. Diese Regeln werden als Protokolle bezeichnet. Zu den wichtigsten zählt das HTTP-Protokoll (Hypertext Tranfer Protocol). Das HTTP-Protokoll gehört zur Kategorie der Netzwerk- oder Übertragungsprotokolle, die exakte Regeln für den Austausch von Daten zwischen durch ein Netz verbundenen Computern definieren. Alle HTTP-Anfragen an den Webserver werden von diesem mit einer Statusmeldung, dem HTTP-Statuscode, beantwortet.

Interaktion zwischen Client und Server anhand des Request-Response-Modells, 21.12.2011Interaktion zwischen Client und Server anhand des Request-Response-Modells, 21.12.2011

Die HTTP-Anfrage

HTTP wird auch aus zustandsloses Protokoll bezeichnet. In der Praxis bedeutet dies, dass jede Anfrage eine unabhängige, abgeschlossene Transaktion darstellt, nach deren Abschluss die Verbindung zwischen Server und Client beendet wird. Für jede erneute Anfrage muss eine erneute Transaktion stattfinden, die ohne Bezug auf die vorangegangene Anfrage behandelt wird. [HTTP 1.1]( http://www.w3.org/Protocols/rfc2616/rfc2616.html kann allerdings mehrere Requests und Responses innerhalb einer Verbindung bearbeiten. Um eine Webseite mit zahlreichen Bildern und Formatierungen darzustellen, sind i.d.R. mehrere Anfragen notwendig. Jede HTTP-Anfrage eines Clients an einen Server folgt exakt demselben Schema. Sie enthält Informationen den Namen der Methode, den Pfad zur angeforderten Ressource und die verwendete Protokoll-Version.

Die HTTP-Response

Stellt ein Webbrowser eine derartige auf dem HTTP-Protokoll basierende Anfrage (HTTP-Request), beantwortet der Server diese mit einer sogenannten HTTP-Response. Seit HTTP 1.0 beinhaltet die erste Zeile der HTTP-Response die sogenannte Statuszeile, die auch den HTTP-Statuscode beinhaltet. In diesem Statuscode teilt der Server dem Client mitteilt, ob die Anfrage erfolgreich bearbeitet werden konnte oder ob ein Fehler vorliegt und wenn ja, welcher. Basierend auf dieser Information entscheidet der Client, wie er mit der Response umgeht.

Der HTTP-Statuscode

Jeder HTTP-Statuscode beinhaltet eine dreistellige Statuscode-Nummer (z.B. 404) und den Fehlergrund in schriftlicher Form (z.B. Not found). Die Statuscode-Nummer gibt dem Browser Auskunft über den Status der Anfrage. Dabei gibt die erste Nummer die Klasse an (z.B. Client-Fehler oder Server-Fehler), während die verbleibenden beiden Zahlen den Status spezifizieren. Während der numerische Statuscode standardisiert ist, können die Phrase zwischen verschiedenen Servern variieren.

Die Bedeutung der Zahlen in einem HTTP-Statuscode, 21.12.2011Die Bedeutung der Zahlen in einem HTTP-Statuscode, 21.12.2011

Die Statuscods existieren in den Klassen 1xx bis 5xx:

  • 1xx – Informationen
  • 2xx – Erfolg
  • 3xx – Umleitung
  • 4xx – Client-Fehler
  • 5xx – Server-Fehler

Ausgenommen bei einer HEAD-Request (die HEAD-Methode ermöglicht es, die Header-Informationen einer Datei abzufragen, ohne die ganze Datei übertragen zu müssen) sollte der Statuscode, so das W3C, stets eine Sektion enthalten, welche die Fehlersituation erläutert und darüber informiert, ob es sich um eine permanente oder vorübergehende Situaton handelt. Zudem sollten User-Agents (wie ein Browser) jede Erläuterung einer Fehlermeldung für für den Nutzer sichtbar machen, so das W3C.

Standard-Statuscodes

Die als Standard geltenden Statuscodes wurden von der Internet Enineering Task Force (IETF) spezifiziert. Die Liste der ursprünglichen Statuscodes ist auf der Webseite der IETF in Dokument Rfc 2616 einsehbar. Bei der IETF handelt es sich um eine Organisation, die Internetstandards entwickelt. Sie kooperiert eng mit W3C und ISO/IEC.

Individualisierte Statuscodes

Neben den standardisierten HTTP-Statuscodes können Server auch individualisierte Statuscodes verwenden. Hierzu gehören z.B. die von Microsoft hinzugefügten Statuscodes 449 (Retry With) und 450 (Blocked by Windows Parental Controls) sowie der Statuscode 499 (Client Closed Request ) des Webservers Nginx. Andere zusätzliche Statuscodes stehen in Zusammenhang zu dem WebDAV-Protokol (z.B. 102, 207, 422). Alle individualisierten Statuscodes sollten jedoch auf den Standard-Klassen basieren. Falls der Webbrowser auf einen Statuscode trifft, den er nicht kennt, kann er anhand der ersten Nummer des Statuscodes feststellen, in welche Klasse der unbekannte Code gehört und ihn durch eine entsprechende Information anzeigen. Wenn der unbekannte Statuscode auf ein Problem hindeutet (weil er z.B. den Klassen 4xx oder 5xx angehört), wird der Browser möglicherweise den angegebenen Grund (reason phrase) anzeigen, damit der User das Problem erkennen kann.

Die Fehlerseiten

Kann der Server eine HTTP-Anfrage erfolgreich bearbeiten, gibt er den Statuscode 200 aus. Für den User wird dieser Statuscode nicht sichtbar, denn die geforderte Webseite wird sofort angezeigt. Anders verhält es sich, wenn ein Fehler aufgetreten ist und der Server einen der HTTP-Fehlerstatuscodes ausgibt, da die geforderte Webseite nicht angezeigt werden kann. Hier geben die meisten Browser statt der gewünschten Webseite eine vom Webserver mitgelieferte standardisierte Fehlerseite aus, die den Statuscode angibt. Auf diese Weise kann der User nachvollziehen, warum die Webseite nicht angezeigt werden konnte.

504-Fehlerseite des Webservers Nginx, 21.12.2011504-Fehlerseite des Webservers Nginx, 21.12.2011

Autor

Kathrin Rockenfeller
SEO und Online-Redaktion

Kategorie:

Kommentare

Und was meinen Sie?

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.