HTTP-Statuscodes: Vollständige Referenzanleitung

· 12 Min. Lesezeit

Inhaltsverzeichnis

Was sind HTTP-Statuscodes?

HTTP-Statuscodes sind dreistellige Zahlen, die von einem Server als Antwort auf die Anfrage eines Clients zurückgegeben werden. Sie zeigen an, ob die Anfrage erfolgreich war, umgeleitet wurde oder zu einem Fehler geführt hat. Jedes Mal, wenn Ihr Browser eine Seite lädt, eine API aufruft oder ein Formular absendet, antwortet der Server mit einem Statuscode.

Stellen Sie sich Statuscodes als die Art und Weise des Servers vor, zu kommunizieren, was mit Ihrer Anfrage passiert ist. Genau wie eine Ampel Ihnen sagt, ob Sie anhalten oder fahren sollen, teilen Statuscodes Ihrer Anwendung mit, ob sie fortfahren, es erneut versuchen oder einen Fehler behandeln soll.

Statuscodes werden basierend auf ihrer ersten Ziffer in fünf Kategorien gruppiert:

Schnellreferenz: Verwenden Sie unser HTTP-Statuscodes-Nachschlage-Tool, um schnell jeden Statuscode zu überprüfen und detaillierte Erklärungen mit Beispielen zu sehen.

Wie Statuscodes funktionieren

Wenn ein Client (wie Ihr Browser oder ein API-Client) eine HTTP-Anfrage stellt, verarbeitet der Server diese und gibt eine Antwort zurück. Diese Antwort enthält immer einen Statuscode in der ersten Zeile, gefolgt von Headern und einem optionalen Body.

So sieht eine typische HTTP-Antwort aus:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1234

{"status": "success", "data": {...}}

Der Statuscode erscheint direkt nach der HTTP-Version. In diesem Beispiel teilt 200 OK dem Client mit, dass die Anfrage erfolgreich war.

Statuscodes dienen mehreren Zwecken:

1xx Informativ

Informative Statuscodes zeigen an, dass der Server die Anfrage erhalten hat und sie weiterhin verarbeitet. Dies sind vorläufige Antworten und werden beim alltäglichen Surfen im Web selten gesehen, aber sie sind wichtig für bestimmte Protokolle und Optimierungen.

100 Continue

Der Server hat die Anfrage-Header erhalten und der Client sollte mit dem Senden des Bodys fortfahren. Dies wird bei großen Uploads verwendet, bei denen der Client einen Expect: 100-continue-Header sendet, um zu prüfen, ob der Server die Anfrage akzeptiert, bevor die vollständige Nutzlast gesendet wird.

Diese Optimierung verhindert die Verschwendung von Bandbreite bei Anfragen, die abgelehnt werden. Wenn Sie beispielsweise eine 500-MB-Videodatei hochladen, möchten Sie nicht all diese Daten senden, nur um dann festzustellen, dass der Server sie aufgrund eines Authentifizierungsfehlers ablehnt.

POST /upload HTTP/1.1
Host: api.example.com
Content-Length: 524288000
Expect: 100-continue

// Server antwortet mit 100 Continue
// Client sendet dann den Anfrage-Body

101 Switching Protocols

Der Server stimmt zu, die Protokolle wie vom Client angefordert zu wechseln. Am häufigsten zu sehen beim Upgrade von HTTP zu WebSocket unter Verwendung des Upgrade: websocket-Headers.

WebSockets ermöglichen Echtzeit-Bidirektionale Kommunikation zwischen Client und Server, was für Chat-Anwendungen, Live-Updates und kollaborative Tools unerlässlich ist.

GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade

// Server antwortet mit 101 Switching Protocols

103 Early Hints

Dieser relativ neue Statuscode ermöglicht es dem Server, vorläufige Header vor der endgültigen Antwort zu senden. Er wird häufig verwendet, um das Vorladen von Ressourcen wie CSS, Schriftarten und JavaScript-Dateien zu starten, während der Server noch die Hauptantwort vorbereitet.

Early Hints können die Seitenladezeiten erheblich verbessern, indem sie Browsern ermöglichen, kritische Ressourcen früher im Seitenladevorgang herunterzuladen.

Profi-Tipp: Die meisten Entwickler müssen 1xx-Codes niemals direkt behandeln. Sie werden normalerweise automatisch von Webservern und HTTP-Bibliotheken verwaltet. Konzentrieren Sie Ihre Fehlerbehandlung stattdessen auf 4xx- und 5xx-Codes.

2xx Erfolg

Erfolgscodes sind das, was Sie sehen möchten. Sie zeigen an, dass die Anfrage erfolgreich empfangen, verstanden und akzeptiert wurde. Verschiedene 2xx-Codes liefern nuancierte Informationen darüber, wie genau die Anfrage verarbeitet wurde.

200 OK

Die Standard-Erfolgsantwort. Die Anfrage war erfolgreich und der Antwort-Body enthält die angeforderten Daten. Dies ist der häufigste Statuscode im Web.

Verwenden Sie 200 OK für erfolgreiche GET-Anfragen, die Daten zurückgeben, erfolgreiche POST-Anfragen, die erstellte Ressourcendaten zurückgeben, und erfolgreiche PUT/PATCH-Anfragen, die aktualisierte Ressourcendaten zurückgeben.

GET /api/users/123 HTTP/1.1

HTTP/1.1 200 OK
Content-Type: application/json

{"id": 123, "name": "John Doe", "email": "[email protected]"}

201 Created

Eine neue Ressource wurde erfolgreich erstellt. Dies ist die angemessene Antwort für POST-Anfragen, die neue Ressourcen erstellen. Die Antwort sollte einen Location-Header enthalten, der auf die neu erstellte Ressource verweist.

POST /api/users HTTP/1.1
Content-Type: application/json

{"name": "Jane Smith", "email": "[email protected]"}

HTTP/1.1 201 Created
Location: /api/users/124
Content-Type: application/json

{"id": 124, "name": "Jane Smith", "email": "[email protected]"}

202 Accepted

Die Anfrage wurde zur Verarbeitung akzeptiert, aber die Verarbeitung wurde noch nicht abgeschlossen. Dies ist nützlich für asynchrone Operationen, bei denen der Server die Anfrage zur späteren Verarbeitung in die Warteschlange stellt.

Häufige Anwendungsfälle sind Stapelverarbeitung, E-Mail-Versand, Video-Codierung und andere langwierige Operationen, die die HTTP-Antwort nicht blockieren sollten.

204 No Content

Die Anfrage war erfolgreich, aber es gibt keinen Inhalt zurückzugeben. Dies wird häufig für DELETE-Anfragen oder PUT/PATCH-Anfragen verwendet, bei denen der Client die aktualisierte Ressource nicht zurückgegeben benötigt.

Die Verwendung von 204 No Content anstelle von 200 OK mit einem leeren Body spart Bandbreite und kommuniziert die Absicht klar.

DELETE /api/users/123 HTTP/1.1

HTTP/1.1 204 No Content

206 Partial Content

Der Server liefert nur einen Teil der Ressource aufgrund eines vom Client gesendeten Range-Headers. Dies ermöglicht fortsetzbare Downloads und Video-Streaming, bei denen der Client bestimmte Byte-Bereiche anfordert.

Videoplayer verwenden dies ausgiebig, um das Springen zu verschiedenen Teilen eines Videos zu ermöglichen, ohne zuerst die gesamte Datei herunterladen zu müssen.

Statuscode Name Wann zu verwenden
200 OK Standard-Erfolgsantwort mit Inhalt
201 Created Ressource erfolgreich erstellt
202 Accepted Anfrage für asynchrone Verarbeitung in Warteschlange
204 No Content Erfolg ohne benötigten Antwort-Body
206 Partial Content Rückgabe des angeforderten Byte-Bereichs

3xx Umleitung

Umleitungscodes zeigen an, dass der Client zusätzliche Maßnahmen ergreifen muss, um die Anfrage abzuschließen. Diese sind entscheidend für URL-Verwaltung, SEO und die Aufrechterhaltung der Abwärtskompatibilität, wenn Ressourcen verschoben werden.

301 Moved Permanently

Die Ressource wurde dauerhaft zu einer neuen URL verschoben, die im Location-Header angegeben ist. Browser und Suchmaschinen sollten ihre Aufzeichnungen aktualisieren, um die neue URL zu verwenden.

Dies ist der bevorzugte Statuscode für permanente Umleitungen. Suchmaschinen übertragen den SEO-Wert von der alten URL auf die neue, und Browser cachen die Umleitung.

GET /old-page HTTP/1.1

HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-page

Profi-Tipp: Verwenden Sie 301-Umleitungen, wenn Sie Inhalte dauerhaft verschoben haben. Verwenden Sie 302 für temporäre Verschiebungen. Dies falsch zu machen, kann Ihrer SEO schaden, da Suchmaschinen sie sehr unterschiedlich behandeln.

302 Found (Temporäre Umleitung)

Die Ressource befindet sich vorübergehend unter einer anderen URL. Der Client sollte weiterhin die ursprüngliche URL für zukünftige Anfragen verwenden. Suchmaschinen übertragen mit dieser Umleitung keinen SEO-Wert.

Häufige Anwendungsfälle sind A/B-Tests, Wartungsseiten und temporäre Werbeseiten.

303 See Other

Die Antwort auf die Anfrage kann unter einer anderen URL mit GET gefunden werden. Dies wird häufig nach POST-Anfragen verwendet, um zu einer Ergebnisseite umzuleiten und doppelte Formularübermittlungen zu verhindern, wenn der Benutzer aktualisiert.

Dies implementiert das Post/Redirect/Get-Muster, das eine Best Practice für Webformulare ist.

304 Not Modified

Die Ressource wurde seit der in den Anfrage-Headern angegebenen Version (If-Modified-Since oder If-None-Match) nicht geändert. Der Client kann seine zwischengespeicherte Version verwenden.

Dies reduziert die Bandbreitennutzung dramatisch und verbessert die Leistung, indem unnötige Datenübertragungen vermieden werden, wenn sich der Inhalt nicht geändert hat.

307 Temporary Redirect

Ähnlich wie 302, garantiert aber, dass sich die Anfragemethode bei der Umleitung nicht ändert. Wenn die ursprüngliche Anfrage POST war, wird die umgeleitete Anfrage ebenfalls POST sein.

308 Permanent Redirect

Ähnlich wie 301, garantiert aber, dass sich die Anfragemethode nicht ändert. Dies ist die moderne, präzisere Version von 301 für APIs und Anwendungen, die eine strikte Methodenbeibehaltung benötigen.

4xx Client-Fehler

Client-Fehlercodes zeigen an, dass die Anfrage fehlerhafte Syntax enthält oder aufgrund von clientseitigen Problemen nicht erfüllt werden kann. Diese Fehler bedeuten, dass der Client die Anfrage ändern muss, bevor er es erneut versucht.

400 Bad Request

Der Server kann die Anfrage aufgrund fehlerhafter Syntax, ungültiger Anfragenachrichtenrahmung oder irreführender Anfragerouting nicht verarbeiten. Dies ist ein allgemeiner Fehler für Anfragen, die nicht in andere 4xx-Kategorien passen.

Häufige Ursachen sind fehlerhaftes JSON, fehlende erforderliche Felder, ungültige Datentypen oder Anfragen, die API-Einschränkungen verletzen.

POST /api/users HTTP/1.1
Content-Type: application/json

{"name": "John", "email": "not-an-email"}

HTTP/1.1 400 Bad Request
Content-Type: application/json

{"error": "Invalid email format"}

401 Unauthorized

Authentifizierung ist erforderlich und ist fehlgeschlagen oder wurde nicht bereitgestellt. Trotz des Namens bedeutet dies tatsächlich "nicht authentifiziert" – der Client muss gültige Anmeldeinformationen bereitstellen.

Die Antwort sollte einen WWW-Authenticate-Header enthalten, der die erforderliche Authentifizierungsmethode angibt.

GET /api/protected-resource HTTP/1.1

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="api"

{"error": "Authentication required"}

403 Forbidden

Der Server hat die Anfrage verstanden, weigert sich aber, sie zu autorisieren. Im Gegensatz zu 401 hilft Authentifizierung nicht – der Client hat keine Berechtigung, auf diese Ressource zuzugreifen.

Verwenden Sie dies, wenn ein Benutzer authentifiziert ist, aber nicht über die erforderlichen Berechtigungen verfügt, oder wenn der Zugriff durch IP-Adresse, Ratenbegrenzung oder andere Richtlinien eingeschränkt ist.