Netzwerk

Liste der HTTP-Statuscodes

Vollständige Liste der HTTP-Statuscodes (1xx-5xx) mit Bedeutung, häufigen Ursachen und Lösungen für Entwickler. Enthält ein Nachschlage-Tool — Codenummer eingeben und sofort die Details anzeigen.

Referenztabelle der HTTP-Statuscodes
Code Name Bedeutung Häufige Ursachen
1xx — Informell
100 Continue (Continue) Zeigt an, dass der Server den ersten Teil der Anfrage erhalten hat und der Client mit dem Senden des restlichen Inhalts fortfahren soll. Wird zurückgegeben, wenn ein Client vor einem großen Anfrage-Body einen Expect: 100-continue-Header sendet.
101 Switching Protocols (Switching Protocols) Zeigt an, dass der Server die Anfrage im Upgrade-Header akzeptiert und zu einem anderen Protokoll wechselt. Eine normale Antwort beim Aufbau einer WebSocket-Verbindung.
102 Processing (Processing) Zeigt an, dass der Server die Anfrage akzeptiert hat und sie noch verarbeitet, wobei noch keine Antwort bereitsteht (WebDAV). Wird gesendet, um Zeitüberschreitungen bei lang laufenden WebDAV-Operationen zu vermeiden.
103 Early Hints (Early Hints) Sendet vorläufige Header wie Link vor der endgültigen Antwort, damit der Browser Ressourcen vorab laden kann. Wird von CDNs oder Reverse-Proxys hinzugefügt, um das Vorabladen von CSS/JS zu beschleunigen.
2xx — Erfolg
200 OK (OK) Die häufigste Erfolgsantwort; sie zeigt an, dass die Anfrage erfolgreich verarbeitet wurde.
201 Created (Created) Zeigt an, dass durch die Anfrage eine neue Ressource erstellt wurde. Wird von APIs zurückgegeben, die Ressourcen per POST erstellen; enthält typischerweise einen Location-Header, der auf die neue Ressource verweist.
202 Accepted (Accepted) Zeigt an, dass die Anfrage angenommen wurde, die Verarbeitung aber noch nicht abgeschlossen ist (asynchrone Verarbeitung). Wird von asynchronen APIs verwendet, die Aufgaben lediglich in eine Warteschlange einreihen, oder von Endpunkten zur Stapelverarbeitung.
204 No Content (No Content) Zeigt an, dass die Anfrage erfolgreich war, aber kein Inhalt zurückgegeben wird. Häufig nach einem erfolgreichen DELETE oder einem PUT-Update, bei dem das API-Design keinen Antwort-Body vorsieht.
206 Partial Content (Partial Content) Zeigt an, dass basierend auf dem Range-Header des Clients nur ein Teil der Ressource zurückgegeben wurde. Eine normale Antwort beim Video-Seeking oder bei fortsetzbaren Downloads.
3xx — Weiterleitung
301 Moved Permanently (Moved Permanently) Zeigt an, dass die Ressource dauerhaft zu einer neuen URL verschoben wurde; Suchmaschinen übertragen die Ranking-Signale auf die neue URL. Wird verwendet, um alte URLs nach einer Änderung der URL-Struktur oder einer Domain-Migration umzuleiten.
302 Found (Found) Zeigt an, dass sich die Ressource vorübergehend unter einer anderen URL befindet. Für dauerhafte Verschiebungen sollte stattdessen 301 verwendet werden. Wird häufig für temporäres Routing während Wartungsarbeiten oder für Weiterleitungen nach dem Login verwendet.
303 See Other (See Other) Zeigt an, dass das Ergebnis mit GET von einer anderen URL abgerufen werden soll (das Post-Redirect-Get-Muster). Wird nach einem Formular-Submit (POST) verwendet, um den erneuten Absende-Dialog des Browsers zu vermeiden.
304 Not Modified (Not Modified) Zeigt an, dass sich die zwischengespeicherte Ressource nicht geändert hat und der Body daher nicht erneut gesendet wird. Wird bei bedingten Anfragen mit If-None-Match / If-Modified-Since zurückgegeben, wenn der Cache noch gültig ist.
307 Temporary Redirect (Temporary Redirect) Eine temporäre Weiterleitung, die im Gegensatz zu 302 die ursprüngliche Methode und den Body beim erneuten Senden beibehält. Wird bei API-Designs verwendet, die POST/PUT-Anfragen umleiten müssen, ohne den Body zu verlieren.
308 Permanent Redirect (Permanent Redirect) Eine dauerhafte Weiterleitung, die im Gegensatz zu 301 die ursprüngliche Methode und den Body beim erneuten Senden beibehält. Wird bei API-Versionsmigrationen verwendet, die eine dauerhafte Verschiebung bei Beibehaltung der Methode erfordern.
4xx — Client-Fehler
400 Bad Request (Bad Request) Zeigt an, dass die Syntax oder die Parameter der Anfrage fehlerhaft sind und der Server sie nicht verarbeiten kann. Wird meist durch JSON-Syntaxfehler, fehlende Pflichtparameter oder Typinkonsistenzen verursacht.
401 Unauthorized (Unauthorized) Zeigt fehlende oder ungültige Authentifizierungsdaten an (trotz des Namens bedeutet er eigentlich "nicht authentifiziert"). Wird oft durch ein abgelaufenes Token, einen fehlenden Authorization-Header oder einen falschen API-Schlüssel verursacht.
402 Payment Required (Payment Required) Für zukünftige Verwendung reserviert; wird manchmal genutzt, um anzuzeigen, dass eine Zahlung erforderlich ist. Einige APIs verwenden diesen Code zweckentfremdet, um überschrittene Nutzungslimits oder einen abgelaufenen Tarif zu signalisieren.
403 Forbidden (Forbidden) Zeigt an, dass der Server die Anfrage verstanden hat, sie aber nicht autorisiert. Typische Ursachen sind unzureichende Berechtigungen, IP-Beschränkungen, Verstöße gegen die CORS-Richtlinie oder falsch konfigurierte Dateiberechtigungen.
404 Not Found (Not Found) Zeigt an, dass die angeforderte Ressource nicht gefunden werden konnte. Meist verursacht durch eine nicht registrierte Route, einen Tippfehler in der URL oder den Zugriff auf eine bereits gelöschte Ressource.
405 Method Not Allowed (Method Not Allowed) Zeigt an, dass die Ressource zwar existiert, die angegebene HTTP-Methode dafür jedoch nicht erlaubt ist. Tritt typischerweise auf, wenn POST an einen reinen GET-Endpunkt gesendet wird, oder bei einer ähnlichen Methoden-Unstimmigkeit.
406 Not Acceptable (Not Acceptable) Zeigt an, dass der Server keine Antwort erzeugen kann, die dem Accept-Header des Clients entspricht. Tritt zum Beispiel auf, wenn ein Client Accept: application/xml anfordert, die API aber nur JSON zurückgibt.
408 Request Timeout (Request Timeout) Zeigt an, dass der Server beim Warten auf den Abschluss der Anfrage durch den Client eine Zeitüberschreitung hatte. Wird häufig durch langsame Verbindungen, große Uploads oder einen mitten in der Anfrage stockenden Client verursacht.
409 Conflict (Conflict) Zeigt an, dass die Anfrage mit dem aktuellen Zustand der Ressource in Konflikt steht. Tritt bei Fehlern durch optimistisches Sperren während gleichzeitiger Bearbeitungen oder bei Versuchen, Duplikate zu erstellen, auf.
410 Gone (Gone) Zeigt an, dass die Ressource dauerhaft entfernt wurde und nicht zurückkehren wird (ein stärkeres Signal als 404). Wird verwendet, um Suchmaschinen explizit mitzuteilen, dass Inhalte absichtlich gelöscht und eingestellt wurden.
413 Payload Too Large (Payload Too Large) Zeigt an, dass der Anfrage-Body die Größe überschreitet, die der Server akzeptieren möchte. Meist verursacht durch das Überschreiten eines Datei-Upload-Limits oder eine zu niedrige Body-Size-Einstellung in Nginx/PHP.
414 URI Too Long (URI Too Long) Zeigt an, dass die Anfrage-URI länger ist, als der Server verarbeiten möchte. Tritt häufig auf, wenn eine große Datenmenge in GET-Query-Parameter gepackt wird.
415 Unsupported Media Type (Unsupported Media Type) Zeigt an, dass der Server den Medientyp des Anfrage-Bodys nicht unterstützt. Häufig, wenn Content-Type: text/plain an eine JSON-API gesendet wird, oder bei ähnlichen Header-Fehlkonfigurationen.
422 Unprocessable Entity (Unprocessable Entity) Zeigt an, dass die Syntax der Anfrage gültig ist, die semantische Validierung jedoch fehlgeschlagen ist. Wird häufig verwendet, um Formularvalidierungsfehler zu melden, etwa fehlende Pflichtfelder oder ungültige Formate.
425 Too Early (Too Early) Zeigt an, dass der Server sich weigert, eine Anfrage zu verarbeiten, die aufgrund des Early-Data-Risikos wiederholt werden könnte. Kann als Schutz vor Replay-Angriffen mit TLS-1.3-0-RTT-Daten zurückgegeben werden.
429 Too Many Requests (Too Many Requests) Zeigt an, dass der Client innerhalb eines bestimmten Zeitfensters zu viele Anfragen gesendet hat (Rate Limiting). Wird durch das Überschreiten eines API-Rate-Limits verursacht; der Retry-After-Header gibt oft an, wie lange vor einem erneuten Versuch gewartet werden soll.
451 Unavailable For Legal Reasons (Unavailable For Legal Reasons) Zeigt an, dass der Inhalt aufgrund einer rechtlichen Anordnung, etwa eines Gerichtsbeschlusses, nicht verfügbar ist. Wird zurückgegeben, wenn ein Content-Anbieter den Zugriff aufgrund eines Urheberrechtsanspruchs oder länderspezifischer gesetzlicher Vorgaben blockiert.
5xx — Server-Fehler
500 Internal Server Error (Internal Server Error) Zeigt an, dass auf dem Server ein unerwarteter Fehler aufgetreten ist und die Anfrage nicht verarbeitet werden konnte. Die Ursachen sind vielfältig: unbehandelte Ausnahmen in der Anwendung, Fehlkonfigurationen, Datenbankverbindungsfehler und mehr.
501 Not Implemented (Not Implemented) Zeigt an, dass der Server die zur Erfüllung der Anfrage erforderliche Funktionalität nicht unterstützt. Tritt auf, wenn eine nicht implementierte HTTP-Methode (z. B. PATCH) an eine ältere Server-Implementierung gesendet wird.
502 Bad Gateway (Bad Gateway) Zeigt an, dass ein Proxy oder Gateway eine ungültige Antwort vom vorgelagerten Server erhalten hat. Meist verursacht dadurch, dass der vorgelagerte Anwendungsserver ausgefallen oder abgestürzt ist.
503 Service Unavailable (Service Unavailable) Zeigt an, dass der Server vorübergehend überlastet ist oder gewartet wird und die Anfrage nicht bearbeiten kann. Hauptsächlich verursacht durch Ressourcenerschöpfung bei hoher Last oder ein geplantes Wartungsfenster.
504 Gateway Timeout (Gateway Timeout) Zeigt an, dass ein Proxy oder Gateway keine rechtzeitige Antwort vom vorgelagerten Server erhalten hat. Oft verursacht durch lang laufende Backend-Verarbeitung, Netzwerklatenz oder einen hängenden vorgelagerten Server.
505 HTTP Version Not Supported (HTTP Version Not Supported) Zeigt an, dass der Server die in der Anfrage verwendete HTTP-Version nicht unterstützt. Tritt auf, wenn ein alter Client oder ein falsch konfigurierter Proxy mit einer unerwarteten HTTP-Version kommuniziert.
507 Insufficient Storage (Insufficient Storage) Zeigt an, dass der Server nicht über genügend Speicherplatz verfügt, um die Anfrage abzuschließen (WebDAV). Wird zurückgegeben, wenn ein Dateispeichervorgang aufgrund von unzureichendem Festplattenspeicher fehlschlägt.
508 Loop Detected (Loop Detected) Zeigt an, dass der Server bei der Verarbeitung der Anfrage eine Endlosschleife festgestellt hat (WebDAV). Tritt auf, wenn eine WebDAV-Bindungskonfiguration eine zirkuläre Referenz enthält.
511 Network Authentication Required (Network Authentication Required) Zeigt an, dass sich der Client authentifizieren muss, um Netzwerkzugriff zu erhalten. Wird verwendet, um zu einer Captive-Portal-Anmeldeseite umzuleiten, etwa in öffentlichen WLANs.

Tipps

  • 404 und 410 sehen ähnlich aus, aber 410 signalisiert explizit, dass Inhalte absichtlich entfernt wurden und nicht zurückkehren. Verwenden Sie 410 für Inhalte ohne Ersatz, um Suchmaschinen ein klareres Signal zu senden.
  • 301 vs. 308 und 302 vs. 307 folgen derselben Unterscheidung zwischen "dauerhaft" und "temporär", aber 308 und 307 behalten beim erneuten Senden den ursprünglichen POST-Body bei, im Gegensatz zu 301 und 302.
  • Wenn Sie einen 429 Too Many Requests erhalten, prüfen Sie den Retry-After-Header und warten Sie diese Zeit ab, bevor Sie es erneut versuchen — wiederholtes Anfragen kann dazu führen, dass Sie ganz blockiert werden.
  • Ein 5xx-Fehler signalisiert ein serverseitiges Problem und keinen Fehler in Ihrer Anfrage — prüfen Sie zuerst die Server-Logs und den Betriebsstatus, bevor Sie Ihren Client-Code debuggen.
  • Der Netzwerk-Tab in den Entwicklertools Ihres Browsers stellt Statuscodes für jede Anfrage farbcodiert dar. In Kombination mit dieser Referenz geht die Fehlersuche deutlich schneller.

FAQ

Beide zeigen an, dass eine Ressource nicht gefunden wurde, aber 404 ist ein allgemeines "nicht gefunden", das vorübergehend sein kann, während 410 explizit signalisiert, dass die Ressource dauerhaft entfernt wurde und nie zurückkehren wird. Verwenden Sie 410 für absichtlich gelöschte Inhalte, um ein klareres SEO-Signal zu senden.

Eine 301-Weiterleitung (dauerhaft) überträgt nahezu alle Ranking-Signale der alten URL auf die neue URL. Eine 302-Weiterleitung (temporär) weist Suchmaschinen an, die alte URL weiterhin als kanonisch zu behandeln, daher sollten dauerhafte Verschiebungen immer 301 verwenden.

401 Unauthorized bedeutet eigentlich "nicht authentifiziert" — der Client hat nicht nachgewiesen, wer er ist. 403 Forbidden bedeutet, dass der Client authentifiziert ist, aber keine Berechtigung hat. Trotz der Namensgebung geht es bei 401 um Authentifizierung und bei 403 um Autorisierung.

Ein 502 bedeutet, dass ein Reverse-Proxy oder Load-Balancer eine ungültige Antwort vom Backend-Anwendungsserver erhalten hat. Prüfen Sie zunächst, ob der Anwendungsserverprozess läuft und nicht abgestürzt ist.

Nutzen Sie den Netzwerk-Tab der Entwicklertools Ihres Browsers, die Option -i bei curl, oder geben Sie die Codenummer in das Nachschlage-Tool dieser Seite ein, um die Bedeutung zu sehen.
ツールくん

Übrigens – Eine kurze Geschichte der HTTP-Statuscodes

Das System der HTTP-Statuscodes wurde erstmals in RFC 1945 standardisiert, der 1996 veröffentlichten HTTP/1.0-Spezifikation. HTTP/1.1 (RFC 2616), veröffentlicht 1999, etablierte den Großteil des heute verwendeten Codesystems, einschließlich der 4xx- und 5xx-Familien, und wurde seither über RFC 7231 (2014) und RFC 9110 (2022) fortgeführt.

Der berühmte Scherzcode 418 I'm a teapot stammt aus einem Aprilscherz-RFC von 1998, das das fiktive "Hyper Text Coffee Pot Control Protocol" (HTCPCP) beschreibt. Der Code sollte zurückgegeben werden, wenn man eine Teekanne bat, Kaffee zu brühen.

Das Designprinzip, bei dem die führende Ziffer eine grobe Kategorie signalisiert, soll spätere Rückgabecode-Systeme in Protokollen wie SMTP und FTP beeinflusst haben. Die Einfachheit von "1xx = informativ, 2xx = Erfolg" ist seit fast drei Jahrzehnten praktisch unverändert geblieben.

451 Unavailable For Legal Reasons ist eine relativ neue Ergänzung, die 2015 formal in RFC 7725 standardisiert wurde. Die Zahl 451 wurde bewusst als Anspielung auf Ray Bradburys dystopischen Roman "Fahrenheit 451" gewählt, der sich um Zensur dreht.