Das bedeuten die HTTP-Statuscodes
Wenn Sie diesen Artikel lesen können, hat Ihr Webbrowser von unserem Webserver vor wenigen Augenblicken den HTTP-Statuscode 200 empfangen. Was dieser HTTP-Antwortcode bedeutet, welche Informationen man daraus ziehen kann und welche weiteren HTTP-Statuscodes existieren, zeigen wir Ihnen in diesem Ratgeber.
100, 301 oder 404: Das bedeutet der HTTP-Statuscode
Bei einem Aufruf einer Website sendet der Browser eine Anfrage (HTTP-Request) an den entsprechenden Server mit der Bitte, einen bestimmten Inhalt zu senden. Der Server nimmt diese Anfragen entgegen und schickt dem Browser eine Nachricht zurück, die aus zwei Bestandteilen besteht: dem Nachrichtenkopf und der eigentlichen Nachricht. Der Nachrichtenkopf (Header) enthält mit dem HTTP-Statuscode eine unverzichtbare Informationen für den Browser. Sichtbar sind diese per Standard allerdings nicht, denn der Browser zeigt immer nur die übertragenen Informationen aus der Nachricht an. Das ist beispielsweise die Website, ein Bild oder auch ein Video.
Über Entwicklertools von fast allen gängigen Browsern wie Firefox, Chrome oder Safari kann man als Webentwickler aber trotzdem hinter die Fassade blicken und diese Informationen gezielt auswerten.
Beispiel einer HTTP-Anfrage:
GET / HTTP/1.1 Host: flyeralarm.digital Accept: */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36
Die dazugehörige Antwort sieht wie folgt aus:
HTTP/1.1 200 OK Server: nginx Date: Mon, 10 Feb 2020 09:10:15 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding Last-Modified: Mon, 10 Feb 2020 08:15:34 GMT Vary: Accept-Encoding Cache-Control: max-age=0 Expires: Mon, 10 Feb 2020 09:10:15 GMT
Die erste Zeile der HTTP-Antwort beginnt mit der HTTP-Version, die der Server unterstützt. Dies entspricht dem Wert der Anfrage und ist zum Beispiel HTTP/1.0 oder HTTP/1.1. Nun folgt der eigentliche Statuscode (HTTP-Code). Dies ist ein numerischer Code, der sich aus drei Ziffern zusammensetzt. Es gibt fünf unterschiedliche Kategorien von HTTP-Statuscodes, die von der jeweils ersten Ziffer genau bestimmt werden:
- 1xx: Informative Nachrichten
- 2xx: Signalisiert eine erfolgreiche Bearbeitung einer Anfrage
- 3xx: Hinweis einer Weiterleitung für den Client
- 4xx: Löst einen Fehler auf Client-Seite aus
- 5xx: Hinweis über Fehlfunktion auf Server-Seite
Nach dem Code folgt ein kurzer beschreibender Text, damit man als Mensch schneller erkennen kann, was der Code bedeutet. So muss man sich nicht unbedingt alle Codes im Kopf einprägen. Danach folgen verschiedene Felder mit individuellem Inhalt. Davon kann es beliebig viele geben. Nach einem Zeilenumbruch folgt der eigentliche Nachrichteninhalt.
Übersicht der wichtigsten HTTP-Statuscodes für Webentwickler
Wer eine eigene Website betreibt oder Applikationen entwickelt, wird immer wieder mit den gleichen Serverstatuscodes konfrontiert werden. In der folgenden Liste finden Sie die Bedeutungen der relevantesten HTTP-Antwortcodes. Neben vielen reservierten HTTP-Codes gibt es je nach Anwendungsgebiet auch eigene HTTP-Codes, die allerdings nur in einem speziellen Kontext gelten.
Statuscode 1xx – Informatives
Der Server signalisiert, dass die Anfrage noch andauert.
- 100 “Continue”: Die laufende Anfrage an den Server wurde noch nicht zurückgewiesen. Der Client kann mit der Anfrage die sehr groß sein kann fortfahren. Dieses Szenario findet bei Dateiuploads häufig Anwendung.
Statuscode 2xx – Alles in Ordnung! Kein Grund zur Panik
Der Server signalisiert, dass die Anfrage erfolgreich war und die Antwort vom Client verwertet werden kann.
- 200 “OK”: Der Server hat die Anfrage erfolgreich verarbeitet und überträgt das Ergebnis im Nachrichteninhalt. Jeder erfolgreiche Webseitenaufruf liefert im Normalfall den HTTP-200-Statuscode zurück.
Statuscode 3xx – Hier geht es lang: Umleitung/Weiterleitung
Der Server signalisiert, dass der Client weitere Schritte durchführen muss, damit die Bearbeitung der Anfrage sichergestellt werden kann.
- 301 “Moved Permanently”: Der Server teilt dem Client mit, dass die angeforderte Ressource dauerhaft verschoben wurde und unter die alte Adresse nicht länger gültig ist. In der Suchmaschinenoptimierung spricht man auch von einer 301-Weiterleitung, damit ein Crawler wie der Googlebot versteht, dass sich ein Link zu einer Ressource geändert hat.
- 302 “Found (Moved Temporarily)”: Der Server teilt dem Client mit, dass die angeforderte Ressource existiert und die Adresse gültig ist. Allerdings steht Sie vorübergehend unter einer anderen Adresse bereit. Diese Art von Weiterleitung sollte man nur für eine kurze Zeit einsetzen, z. B. wenn die Website gerade nicht erreichbar ist aufgrund von Wartungsarbeiten oder eine Aktion durchgeführt wird.
- 304 “Not Modified”: Der Client bekommt die Information, dass die Ressource seit dem letzten Aufruf nicht verändert wurde. Dadurch kann der Browser auf seinen eigenen Browser-Cache zugreifen und der Server muss die Ressource nicht erneut übertragen. Dadurch kann Bandbreite gespart werden.
Statuscode 4xx – Client-Fehler
Die Anfrage an den Server ist gescheitert, da es ein Problem auf Client-Seite gibt. Der bekannteste Fehlercode ist der Code 404 Not found.
- 400 “Bad Request”: Der Aufbau der Anfrage war fehlerhaft. Der Server konnte die Anfrage nicht verstehen und sendet daher den Code 400 zurück.
- 401 “Unauthorized”: Die Anfrage kann nur ausgeführt werden, wenn der Client sich vorher erfolgreich authentifiziert hat. Wie diese Authentifizierung erfolgen muss, wird im Header-Feld WWW-Authenticate der Antwort übermittelt. Häufig wird ein sogenannter .htaccess-Passwortschutz erstellt. Hier erscheint dann ein Browser-Fenster in dem man den Nutzernamen und das Passwort angeben muss.
- 403 “Forbidden”: Die Anfrage wurde aufgrund von Berechtigungsproblemen nicht durchgeführt. Häufig gibt es diesen Fehler auch, wenn man ein Verzeichnis aufruft, dass keine Dateien enthält.
- 404 “Not Found”: Dieser Fehlercode tritt auf, wenn der Server die vom Client angeforderte Ressource nicht bereitstellen kann, weil sie nicht existiert.
Fehlermeldung mit dem HTTP-Code 404.Screenshot: Google / FLYERALARM Digital
- 410 “Gone”: Die angeforderte Ressource wird nicht länger bereitgestellt und wurde dauerhaft entfernt. Mit dem 410-Code kann Crawlern wie Google signalisiert werden, dass der Zustand dauerhaft ist. Die Ressource wird definitiv nicht mehr zur Verfügung stehen. Das kann die Entfernung aus dem Suchmaschinenindex beschleunigen.
- 413 “Request Entity Too Large”: Die vom Client an den Server gestellte Anfrage war zu groß. Das kommt häufig bei Dateiuploads in Verbindung mit der Nutzung von nginx vor.
Statuscode 5xx – Server-Fehler
Die Anfrage an den Server ist gescheitert, da es ein Problem bei der Erzeugung der Antwort auf Server-Seite gab.
- 500 “Internal Server Error”: Der 500er-Code ist ein Sammelstatus-Code für unerwartete Serverfehler. Dieser Fehler kommt beispielsweise vor, wenn PHP-Skriptdateien nicht korrekt sind.
Serverfehler mit dem HTTP-Code 500. Hier wurde eine eigene Fehlerseite darfür entwickelt.Screenshot: Charlesworth Group / FLYERALARM Digital
- 502 “Bad Gateway”: Der Server hat eine ungültige Antwort erhalten und konnte seine Funktion als Gateway bzw. Proxy nicht erfüllen.
- 504 “Gateway Timeout”: Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er innerhalb einer festgelegten Zeitspanne keine Antwort von seinerseits benutzten Servern oder Diensten erhalten hat.
Statuscode 9xx – Proprietäre Fehlercodes
Die große Lücke zwischen 500 und 900 hat einen Sinn! Dazwischen existieren keine standardisierten Codes. Daher verwenden Softwarehersteller und Entwickler diesen Bereich von 900-999 für eigene Statuscodes.
Die hier vorgestellten HTTP-Codes sind nur ein kleiner Teil, der spezifizierten HTTP-Codes. Es gibt viele weitere Codes, die alle auf Wikipedia genau beschrieben werden. In der offiziellen Spezifikation gibt es viele weitere nützliche Hinweise zum HTTP-Protokoll und dessen Statuscodes.