HTTP-Statuscodes — vollständige Liste mit Bedeutung und Beispielen

Alle offiziellen HTTP-Statuscodes von 100 bis 511 plus Codes von nginx, Cloudflare und AWS, jeweils mit Einsatzzweck.

91 Codes

1xx Information

100Continue

Zwischenantwort: Der Server hat die Request-Header erhalten, und der Client soll den Body senden.

Wann verwenden

Wird von Servern automatisch gesendet, wenn ein Client vor dem Upload eines großen Bodys „Expect: 100-continue“ mitschickt, damit er keine Bandbreite für eine Anfrage verschwendet, die abgelehnt würde.

Wann nicht

Sende ihn nicht aus Anwendungscode als finalen Status; er ist nie die Antwort auf eine Anfrage, nur ein Schritt vor der eigentlichen.

Caching

Nicht zutreffend

Definiert in

RFC 9110 §15.2.1

Beispiel
PUT /upload HTTP/1.1
Content-Length: 104857600
Expect: 100-continue

HTTP/1.1 100 Continue
101Switching Protocols

Der Server stimmt zu, die Verbindung auf das im Upgrade-Header genannte Protokoll umzustellen.

Wann verwenden

Die Handshake-Antwort für WebSocket-Verbindungen (Upgrade: websocket) und früher für Upgrades von HTTP/1.1 auf h2c.

Wann nicht

HTTP/2 und HTTP/3 verwenden ihn nicht; WebSockets über HTTP/2 nutzen stattdessen die erweiterte CONNECT-Methode (RFC 8441).

Caching

Nicht zutreffend

Definiert in

RFC 9110 §15.2.2

Beispiel
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
102ProcessingVeraltet

Zwischenantwort, die dem Client mitteilt, dass der Server noch an einer langen WebDAV-Anfrage arbeitet, damit kein Timeout eintritt.

WebDAV. In RFC 4918 aus WebDAV entfernt, aber weiterhin im IANA-Register.

Wann verwenden

Nur in älteren WebDAV-Servern bei langsamen rekursiven Vorgängen wie einem tiefen COPY oder MOVE.

Wann nicht

Neue APIs sollten für lang laufende Aufgaben stattdessen 202 Accepted mit einer Status-URL zurückgeben.

Caching

Nicht zutreffend

Definiert in

RFC 2518 §10.1

Beispiel
HTTP/1.1 102 Processing
103Early Hints

Zwischenantwort mit Link-Headern, damit der Browser mit Preload oder Preconnect beginnen kann, während der Server die finale Antwort noch vorbereitet.

Wann verwenden

Wenn das Erzeugen des HTML Zeit braucht (serverseitiges Rendering, Datenbankabfragen) und du weißt, welche CSS-Dateien, Schriften oder Origins die Seite braucht. Chromium-Browser und Firefox reagieren auf Preload- und Preconnect-Hinweise in 103-Antworten, Safari auf Preconnect.

Wann nicht

Setze keine Header hinein, die nur für die finale Antwort gelten dürfen, etwa Set-Cookie; Browser ignorieren die meisten Header in 103.

Caching

Nicht zutreffend

Definiert in

RFC 8297

Beispiel
HTTP/1.1 103 Early Hints
Link: </style.css>; rel=preload; as=style
Link: <https://cdn.example.com>; rel=preconnect

HTTP/1.1 200 OK
Content-Type: text/html
104Upload Resumption Supported

Zwischenantwort, die dem Client mitteilt, dass der begonnene Upload später fortgesetzt werden kann, und wo.

Vorläufige IANA-Registrierung für den IETF-Entwurf zu fortsetzbaren Uploads; noch kein finaler RFC.

Wann verwenden

Experimentell: Server, die den Entwurf zu fortsetzbaren Uploads umsetzen, senden ihn mit einem Location-Header für die Upload-Ressource.

Wann nicht

Nicht für den allgemeinen Einsatz, bis der Entwurf als RFC veröffentlicht ist; die meisten Clients und Proxys kennen ihn nicht.

Caching

Nicht zutreffend

Definiert in

draft-ietf-httpbis-resumable-upload

Beispiel
HTTP/1.1 104 Upload Resumption Supported
Upload-Draft-Interop-Version: 6
Location: https://example.com/upload/b530ce8ff

2xx Erfolg

200OKStandardmäßig cachebar

Die Anfrage war erfolgreich. Was der Body enthält, hängt von der Methode ab: bei GET die Ressource, bei POST das Ergebnis der Aktion.

Wann verwenden

Die normale Erfolgsantwort für GET sowie für POST, PUT, PATCH oder DELETE, wenn du einen Body mit dem Ergebnis zurückgibst.

Wann nicht

Gib nicht 200 mit einer Fehlermeldung im Body zurück („Soft Errors“). Clients, Monitoring, Caches und Suchmaschinen lesen den Statuscode, nicht dein JSON.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.3.1

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

{"id": 42, "name": "Ada"}
201Created

Die Anfrage war erfolgreich und hat eine oder mehrere neue Ressourcen erstellt.

Wann verwenden

Nach einem POST (oder einem PUT auf eine neue URL), der etwas anlegt. Füge einen Location-Header hinzu, der auf die neue Ressource zeigt; der Body beschreibt sie meist.

Wann nicht

Verwende ihn nicht, wenn nichts Neues erstellt wurde, etwa bei der Aktualisierung eines bestehenden Datensatzes (nimm 200 oder 204).

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.3.2

Beispiel
HTTP/1.1 201 Created
Location: /users/42
Content-Type: application/json

{"id": 42}
202Accepted

Die Anfrage wurde zur Verarbeitung angenommen, die Verarbeitung ist aber noch nicht abgeschlossen und kann noch fehlschlagen.

Wann verwenden

Eingereihte oder asynchrone Aufgaben: Videokodierung, Berichterstellung, Massenimporte. Gib einen Link zurück, unter dem der Client den Jobstatus prüfen kann.

Wann nicht

Verwende ihn nicht als „Erfolg“ für synchrone Aufgaben; er verspricht ausdrücklich nichts über das Ergebnis.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.3.3

Beispiel
HTTP/1.1 202 Accepted
Location: /jobs/7f3a
Content-Type: application/json

{"status": "queued"}
203Non-Authoritative InformationStandardmäßig cachebar

Erfolg, aber ein transformierender Proxy hat die 200-Antwort des Ursprungsservers verändert.

Wann verwenden

Nur von Zwischenstationen, die Inhalte verändern, etwa ein Proxy, der Bilder komprimiert oder HTML umschreibt, um dem Client mitzuteilen, dass es nicht exakt die Antwort des Ursprungsservers ist.

Wann nicht

Ursprungsserver und APIs sollten ihn nicht senden.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.3.4

Beispiel
HTTP/1.1 203 Non-Authoritative Information
Content-Type: image/webp
204No ContentStandardmäßig cachebar

Erfolg, und es gibt absichtlich keinen Body.

Wann verwenden

Erfolgreiches DELETE, PUT oder PATCH, wenn du die aktualisierte Ressource nicht zurückgibst, automatisches Speichern eines Formulars oder eine CORS-Preflight-Antwort.

Wann nicht

Füge nie einen Body hinzu; Clients lesen ihn nicht, und bei HTTP/1.1 beschädigt ein überzähliger Body die nächste Antwort auf der Verbindung. Nimm 200, wenn du etwas zurückzugeben hast.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.3.5

Beispiel
HTTP/1.1 204 No Content
205Reset Content

Erfolg; der Client soll die Dokumentansicht zurücksetzen, zum Beispiel das abgeschickte Formular leeren.

Wann verwenden

Eingabeoberflächen, bei denen der Benutzer ein Formular absendet und sofort den nächsten Datensatz eingibt.

Wann nicht

Browser setzen das Zurücksetzen nicht um, in der Praxis verhält er sich also wie 204. Darf keinen Body enthalten.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.3.6

Beispiel
HTTP/1.1 205 Reset Content
206Partial ContentStandardmäßig cachebar

Der Server gibt nur den oder die Byte-Bereiche zurück, die der Client mit einem Range-Header angefordert hat.

Wann verwenden

Spulen in Video und Audio, fortsetzbare Downloads und Download-Manager, die eine Datei in parallelen Teilen laden. Füge Content-Range hinzu.

Wann nicht

Sende ihn nur, wenn die Anfrage einen Range-Header hatte, den du berücksichtigst. Wenn du Range ignorierst, sende 200 mit dem vollständigen Body.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.3.7

Beispiel
GET /video.mp4 HTTP/1.1
Range: bytes=0-1023

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/146515
Content-Length: 1024
207Multi-Status

Der Body (XML) enthält für jede von mehreren Ressourcen einen eigenen Status.

WebDAV

Wann verwenden

WebDAV-Vorgänge wie PROPFIND, die viele Ressourcen betreffen. Manche JSON-APIs übernehmen ihn für Batch-Endpunkte.

Wann nicht

Bei Batch-APIs bevorzugen viele Teams 200 mit Ergebnissen pro Element, da generische Clients 207 als einfachen Erfolg behandeln.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 4918 §11.1

Beispiel
HTTP/1.1 207 Multi-Status
Content-Type: application/xml; charset="utf-8"
208Already Reported

Wird innerhalb einer 207-Antwort verwendet, um anzugeben, dass eine Ressource bereits weiter oben aufgeführt wurde und daher nicht wiederholt wird (verhindert Schleifen mit Bindings).

WebDAV

Wann verwenden

WebDAV-Server, die Bindings unterstützen (RFC 5842).

Wann nicht

Außerhalb von WebDAV als eigenständige Antwort nicht sinnvoll.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 5842 §7.1

Beispiel
<D:status>HTTP/1.1 208 Already Reported</D:status>
226IM Used

Der Server hat ein GET mit einem Delta (Instance Manipulation) beantwortet, das auf die aktuelle Ressource angewendet wurde, statt die vollständige Ressource zu senden.

Wann verwenden

Delta-Kodierung für HTTP (A-IM- / IM-Header). Selten im Einsatz.

Wann nicht

Von Browsern nicht unterstützt; verwende ihn nicht in gewöhnlichen APIs.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 3229 §10.4.1

Beispiel
HTTP/1.1 226 IM Used
IM: vcdiff
ETag: "v2"

3xx Umleitung

300Multiple ChoicesStandardmäßig cachebar

Die Ressource hat mehrere Darstellungen, und der Client (oder Benutzer) soll eine auswählen.

Wann verwenden

Selten: agentengesteuerte Content Negotiation, etwa ein Dokument in mehreren Sprachen oder Formaten mit Links zu jeder Variante.

Wann nicht

Browser wählen nicht automatisch. Für die Auswahl von Sprache oder Format funktioniert serverseitige Negotiation oder eine normale Seite mit Links besser.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.4.1

Beispiel
HTTP/1.1 300 Multiple Choices
Link: </doc.en.html>; rel=alternate; hreflang=en
Link: </doc.fr.html>; rel=alternate; hreflang=fr
301Moved PermanentlyStandardmäßig cachebar

Die Ressource hat eine neue dauerhafte URL, angegeben im Location-Header.

Wann verwenden

Domainumzüge, HTTP zu HTTPS, geänderte Slugs, Zusammenführen doppelter URLs. Suchmaschinen übertragen Ranking-Signale auf die neue URL.

Wann nicht

Browser können beim Folgen eines 301 POST in GET ändern. Wenn die Methode erhalten bleiben muss (ein umgezogener API-Endpunkt), nimm 308. Browser cachen 301-Antworten aggressiv, also teste vor dem Deployment.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.4.2

Beispiel
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/new-page
302Found

Die Ressource befindet sich vorübergehend unter einer anderen URL; nutze künftig weiter die ursprüngliche URL.

Wann verwenden

Temporäre Umleitungen: Login-Weiterleitungen, A/B-Tests, Wartungsseiten, Weiterleitungen nach Region oder Sprache.

Wann nicht

Browser ändern beim Folgen eines 302 POST in GET (historisches Verhalten, das der RFC erlaubt). Nimm 303 für „sieh dir das Ergebnis an“ nach einem POST und 307, wenn die Methode erhalten bleiben muss.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.4.3

Beispiel
HTTP/1.1 302 Found
Location: /login?next=%2Faccount
303See Other

Leitet den Client auf eine andere URL um, die er mit GET abrufen muss.

Wann verwenden

Das Post/Redirect/Get-Muster: Sende nach einem Formular-POST 303 auf die Ergebnisseite, damit ein Neuladen der Seite das Formular nicht erneut absendet.

Wann nicht

Nicht für umgezogene Inhalte; er sagt nichts darüber aus, ob die ursprüngliche URL umgezogen ist.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.4.4

Beispiel
HTTP/1.1 303 See Other
Location: /orders/1234
304Not Modified

Antwort auf ein bedingtes GET oder HEAD (If-None-Match oder If-Modified-Since): Die gecachte Kopie des Clients ist weiterhin gültig.

Cache-Revalidierung: wird selbst nicht gespeichert, frischt aber die gecachte Antwort auf, die der Client bereits hat.

Wann verwenden

Automatisch von Servern und CDNs, wenn ETag oder Last-Modified-Datum übereinstimmen; so entfällt die Übertragung eines unveränderten Bodys.

Wann nicht

Sende nie einen Body. Sende ihn nicht auf eine Anfrage, die nicht bedingt war; der Client hat dann nichts, was er wiederverwenden kann.

Caching

Nicht zutreffend

Definiert in

RFC 9110 §15.4.5

Beispiel
GET /app.js HTTP/1.1
If-None-Match: "33a64df5"

HTTP/1.1 304 Not Modified
ETag: "33a64df5"
Cache-Control: max-age=3600
305Use ProxyVeraltet

Veraltet. Forderte den Client früher auf, die Anfrage über einen in Location genannten Proxy zu wiederholen.

Wann verwenden

Nichts. Er wurde aus Sicherheitsgründen für veraltet erklärt, und Browser ignorieren ihn.

Wann nicht

Sende ihn nicht.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.4.6

Beispiel
HTTP/1.1 305 Use Proxy
306(Unused)Veraltet

Reserviert. Wurde in einem Entwurf für „Switch Proxy“ verwendet und ist nicht mehr in Gebrauch.

Wann verwenden

Nichts.

Wann nicht

Sende ihn nicht.

Caching

Nicht zutreffend

Definiert in

RFC 9110 §15.4.7

307Temporary Redirect

Temporäre Umleitung, bei der der Client die Anfrage mit derselben Methode und demselben Body wiederholen muss.

Wann verwenden

Vorübergehendes Umleiten von POST-, PUT- oder DELETE-Anfragen (ein API-Endpunkt ist wegen Wartung umgezogen). Browser zeigen außerdem einen internen 307, wenn HSTS HTTPS erzwingt.

Wann nicht

Für einen dauerhaften Umzug nimm 308. Für „hol das Ergebnis per GET“ nimm 303.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.4.8

Beispiel
HTTP/1.1 307 Temporary Redirect
Location: https://api2.example.com/v1/orders
308Permanent RedirectStandardmäßig cachebar

Dauerhafte Umleitung, bei der der Client die Anfrage mit derselben Methode und demselben Body wiederholen muss.

Wann verwenden

Ein dauerhaft umgezogener API-Endpunkt, der POST oder PUT empfängt. Suchmaschinen behandeln ihn wie 301. Next.js und Vercel verwenden standardmäßig 308 für dauerhafte Umleitungen.

Wann nicht

Sehr alte Clients (Internet Explorer unter Windows 7 und älter) verstehen ihn nicht; für einfache Seitenumzüge ist 301 genauso gut.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.4.9

Beispiel
HTTP/1.1 308 Permanent Redirect
Location: https://example.com/api/v2/upload

4xx Client-Fehler

400Bad Request

Der Server verarbeitet die Anfrage wegen eines Client-Fehlers nicht: fehlerhafte Syntax, ungültiges Framing oder ungültige Parameter.

Wann verwenden

Nicht parsbares JSON, ein fehlender Pflichtparameter, ein Wert vom falschen Typ. Erkläre das Problem im Body (RFC 9457 problem+json ist ein gutes Format).

Wann nicht

Für wohlgeformte Eingaben, die an Geschäftsregeln scheitern, verwenden viele APIs 422. Für Authentifizierungsprobleme nimm 401 oder 403.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.1

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

{"title": "Invalid JSON", "detail": "Unexpected token } at position 41"}
401Unauthorized

Der Anfrage fehlen gültige Anmeldedaten. Trotz des Namens bedeutet er „nicht authentifiziert“.

Wann verwenden

Kein Token, ein abgelaufenes Token oder ein falsches Passwort. Die Antwort muss einen WWW-Authenticate-Header enthalten, der beschreibt, wie man sich authentifiziert.

Wann nicht

Wenn der Benutzer angemeldet ist, aber keine Berechtigung hat, nimm 403. Sende 401 nicht ohne WWW-Authenticate.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.2

Beispiel
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="api", error="invalid_token"
402Payment Required

Für künftige Verwendung reserviert. Es gibt keine standardisierte Bedeutung.

Wann verwenden

Manche APIs verwenden ihn für „Kontingent aufgebraucht, upgrade deinen Tarif“ oder eine fehlgeschlagene Zahlung (Stripe gibt 402 bei abgelehnten Kartenzahlungen zurück).

Wann nicht

Verlass dich nicht darauf, dass Clients ihn verstehen; beschreibe das Problem im Body.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.3

Beispiel
HTTP/1.1 402 Payment Required
Content-Type: application/json

{"error": "card_declined"}
403Forbidden

Der Server hat die Anfrage verstanden und weiß, wer du bist (oder es ist ihm egal), verweigert aber die Ausführung.

Wann verwenden

Dem angemeldeten Benutzer fehlt die Berechtigung, eine IP ist gesperrt, Verzeichnisauflistung ist deaktiviert oder eine WAF-Regel hat gegriffen. Erneutes Anmelden hilft nicht.

Wann nicht

Wenn Anmeldedaten fehlen oder ungültig sind, nimm 401. Wenn schon die Information, dass die Ressource existiert, ein Leck wäre, gib stattdessen 404 zurück.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.4

Beispiel
HTTP/1.1 403 Forbidden
Content-Type: application/json

{"error": "You do not have access to this project"}
404Not FoundStandardmäßig cachebar

Der Server hat für die URL keine aktuelle Darstellung oder will nicht verraten, ob es eine gibt.

Wann verwenden

Unbekannte URLs, gelöschte Datensätze, wenn du Löschungen nicht nachverfolgst, oder das Verbergen von Ressourcen vor unberechtigten Benutzern.

Wann nicht

Wenn die Ressource existiert hat und endgültig weg ist, sagt 410 das ausdrücklich. Gib keine 200-Seite zurück, auf der „nicht gefunden“ steht (ein Soft 404).

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.5.5

Beispiel
HTTP/1.1 404 Not Found
Content-Type: text/html
405Method Not AllowedStandardmäßig cachebar

Die URL existiert, unterstützt aber diese HTTP-Methode nicht.

Wann verwenden

Ein DELETE auf eine schreibgeschützte Ressource oder ein POST auf eine Seite, die nur GET kennt. Die Antwort muss einen Allow-Header mit den unterstützten Methoden enthalten.

Wann nicht

Verwende ihn nicht für Berechtigungsprobleme (403) oder für Methoden, die der Server überhaupt nicht implementiert (501).

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.5.6

Beispiel
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD
406Not Acceptable

Der Server kann keine Antwort erzeugen, die zu den Headern Accept, Accept-Language oder Accept-Encoding der Anfrage passt.

Wann verwenden

Eine API, die nur JSON spricht, erhält „Accept: application/xml“ ohne Fallback.

Wann nicht

Die meisten Server ignorieren nicht passende Accept-Header und senden stattdessen ihr Standardformat, was meist freundlicher ist.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.7

Beispiel
HTTP/1.1 406 Not Acceptable
Content-Type: application/json

{"supported": ["application/json"]}
407Proxy Authentication Required

Wie 401, aber der Client muss sich beim dazwischenliegenden Proxy authentifizieren.

Wann verwenden

Wird von Forward-Proxys (Unternehmens-Proxys) mit einem Proxy-Authenticate-Header gesendet.

Wann nicht

Ursprungsserver sollten ihn nie senden.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.8

Beispiel
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="corp-proxy"
408Request Timeout

Der Server hat in der Zeit, die er zu warten bereit war, keine vollständige Anfrage erhalten und schließt die Verbindung.

Wann verwenden

Wird von Servern bei inaktiven Keep-alive-Verbindungen oder langsamen Uploads gesendet. Clients können die Anfrage über eine neue Verbindung wiederholen.

Wann nicht

Nicht für langsame Backend-Verarbeitung; das ist ein 504 an einem Gateway oder einfach eine langsame Antwort. Sende „Connection: close“ mit.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.9

Beispiel
HTTP/1.1 408 Request Timeout
Connection: close
409Conflict

Die Anfrage steht im Konflikt mit dem aktuellen Zustand der Ressource.

Wann verwenden

Anlegen eines Benutzers, dessen E-Mail-Adresse schon existiert, Bearbeiten eines Datensatzes, den jemand anderes geändert hat (Versionskonflikt), Löschen eines nicht leeren Ordners.

Wann nicht

Für fehlgeschlagene If-Match- / If-Unmodified-Since-Bedingungen nimm 412. Für Validierungsfehler nimm 400 oder 422.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.10

Beispiel
HTTP/1.1 409 Conflict
Content-Type: application/json

{"error": "Email already registered"}
410GoneStandardmäßig cachebar

Die Ressource gab es hier früher, sie ist dauerhaft weg und hat keine Weiterleitungsadresse.

Wann verwenden

Eingestellte Produkte, abgelaufene Aktionen, gelöschte Konten, eingestellte API-Versionen. Google behandelt 404 und 410 fast gleich, ein 410 wird aber eventuell etwas früher aus dem Index entfernt.

Wann nicht

Wenn der Inhalt umgezogen ist, leite stattdessen mit 301 um. Wenn du nicht sicher bist, ob es endgültig ist, nimm 404.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.5.11

Beispiel
HTTP/1.1 410 Gone
411Length Required

Der Server verlangt bei dieser Anfrage einen Content-Length-Header.

Wann verwenden

Server, die Chunked-Uploads ablehnen und die Body-Größe vorab kennen müssen.

Wann nicht

Wird von Anwendungen selten gebraucht; meist sendet ihn der Webserver selbst.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.12

Beispiel
HTTP/1.1 411 Length Required
412Precondition Failed

Eine Bedingung in den Request-Headern (If-Match, If-Unmodified-Since, If-None-Match bei einem Schreibvorgang) war falsch.

Wann verwenden

Optimistische Nebenläufigkeit: Der Client hat If-Match mit einem alten ETag gesendet, jemand anderes hat die Ressource also zuerst geändert.

Wann nicht

Verwende ihn nicht für Verstöße gegen Geschäftsregeln, die nichts mit bedingten Headern zu tun haben (409 oder 422).

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.13

Beispiel
PUT /docs/7 HTTP/1.1
If-Match: "v3"

HTTP/1.1 412 Precondition Failed
ETag: "v4"
413Content Too Large

Der Request-Body ist größer, als der Server verarbeiten will. Hieß vor RFC 9110 „Payload Too Large“.

Wann verwenden

Uploads über dem Limit (nginx client_max_body_size, eine API-Obergrenze von 10 MB). Wenn das Limit vorübergehend ist, füge Retry-After hinzu.

Wann nicht

Für eine zu lange URL nimm 414, für zu große Header 431.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.14

Beispiel
HTTP/1.1 413 Content Too Large
Connection: close
414URI Too LongStandardmäßig cachebar

Das Anfrageziel (URL) ist länger, als der Server interpretieren will.

Wann verwenden

Riesige Query-Strings, oft ein GET-Formular, das ein POST sein sollte, oder eine Umleitungsschleife, die ständig Parameter anhängt.

Wann nicht

Verlege große Eingaben in einen Request-Body (POST), statt das Limit immer weiter zu erhöhen.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.5.15

Beispiel
HTTP/1.1 414 URI Too Long
415Unsupported Media Type

Der Server lehnt die Anfrage ab, weil das Format des Bodys (Content-Type oder Content-Encoding) nicht unterstützt wird.

Wann verwenden

Ein Endpunkt, der JSON akzeptiert, erhält Formulardaten oder XML, oder der Content-Type-Header fehlt. Füge Accept-Post oder Accept-Patch hinzu, um zu zeigen, was unterstützt wird.

Wann nicht

Nicht für einen Body im richtigen Format mit ungültigem Inhalt (400 oder 422).

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.16

Beispiel
HTTP/1.1 415 Unsupported Media Type
Accept-Post: application/json
416Range Not Satisfiable

Keiner der Byte-Bereiche im Range-Header überschneidet sich mit der Ressource, etwa wenn Bytes hinter dem Dateiende angefordert werden.

Wann verwenden

Fortgesetzte Downloads, bei denen die Datei kleiner geworden ist oder der Client über ihr Ende hinaus anfragt. Füge Content-Range: bytes */<length> hinzu.

Wann nicht

Server dürfen einen ungültigen Range auch einfach ignorieren und 200 mit dem vollständigen Body zurückgeben.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.17

Beispiel
HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */47022
417Expectation Failed

Der Server kann die Anforderung im Expect-Header der Anfrage nicht erfüllen.

Wann verwenden

Ein Client hat „Expect: 100-continue“ an einen Server oder Proxy gesendet, der das nicht unterstützt, oder eine unbekannte Erwartung angegeben.

Wann nicht

Clients, die ihn erhalten, sollten es ohne Expect-Header erneut versuchen.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.18

Beispiel
HTTP/1.1 417 Expectation Failed
418(Unused)

Von RFC 9110 reserviert, weil 418 als Scherzcode „I’m a teapot“ weit verbreitet war; er hat in HTTP keine definierte Bedeutung.

Reserviert. Berühmt als „I’m a teapot“ aus dem Aprilscherz-RFC 2324 (HTCPCP) von 1998.

Wann verwenden

Nur als Easter Egg. Manche Dienste nutzen ihn, um Anfragen, die sie ablehnen wollen, mit Humor zu beantworten.

Wann nicht

Verwende ihn nicht für echte Fehler; ihm kann keine Bedeutung zugewiesen werden, und Clients wissen nicht, was zu tun ist.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.19

Beispiel
HTTP/1.1 418 I'm a teapot
419Page ExpiredInoffiziell · Laravel

Laravel gibt ihn zurück, wenn das CSRF-Token fehlt oder abgelaufen ist, meist nachdem eine Sitzung auf einer Seite mit Formular abgelaufen ist.

Wann verwenden

Wird von Laravels CSRF-Middleware gesendet. Abhilfe: Seite neu laden, @csrf in Formulare einfügen oder bei AJAX-Anfragen den Header X-CSRF-TOKEN mitsenden.

Wann nicht

Kein Standardcode; sende ihn nicht aus APIs, die nicht auf Laravel basieren.

Caching

Nicht zutreffend

Definiert in

Laravel (nicht im IANA-Register)

Beispiel
HTTP/1.1 419 unknown status
420Enhance Your CalmInoffiziell · Twitter (Legacy)

Die Ratenlimit-Antwort der alten Twitter-API, ersetzt durch den Standardcode 429.

Wann verwenden

Nichts Neues. Du triffst ihn eventuell noch in alten Client-Bibliotheken. Spring definierte früher 420 „Method Failure“, inzwischen veraltet.

Wann nicht

Nimm 429 für Rate Limiting.

Caching

Nicht zutreffend

Definiert in

Twitter API v1 (nicht im IANA-Register)

Beispiel
HTTP/1.1 420 Enhance Your Calm
421Misdirected Request

Die Anfrage hat einen Server erreicht, der für diesen Host und dieses Schema keine Antwort erzeugen kann.

Wann verwenden

HTTP/2-Connection-Coalescing ist schiefgegangen: Der Browser hat eine Verbindung für einen anderen Hostnamen wiederverwendet, der vom selben Zertifikat abgedeckt ist, den der Server aber nicht bedient. Der Client sollte es über eine neue Verbindung erneut versuchen.

Wann nicht

Nicht für gewöhnliche unbekannte Hostnamen auf einem einzelnen Server; das ist meist ein 404 oder der Standard-Virtual-Host.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.20

Beispiel
HTTP/2 421
422Unprocessable Content

Die Anfrage ist wohlgeformt und in einem unterstützten Format, aber ihr Inhalt besteht die Validierung nicht. Heißt in RFC 4918 „Unprocessable Entity“.

Wann verwenden

Validierungsfehler in Formularen und APIs: eine E-Mail-Adresse, die keine ist, ein Enddatum vor dem Startdatum. Rails, Laravel und FastAPI verwenden ihn standardmäßig.

Wann nicht

Für fehlerhafte Syntax (nicht parsbares JSON) nimm 400.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.21

Beispiel
HTTP/1.1 422 Unprocessable Content
Content-Type: application/json

{"errors": {"email": ["is invalid"]}}
423Locked

Die Ressource ist gesperrt, daher kann die Anfrage sie nicht ändern.

WebDAV

Wann verwenden

WebDAV-LOCK-Semantik. Manche APIs nutzen ihn für Datensätze, die gerade von jemand anderem bearbeitet werden, oder für Konten, die nach fehlgeschlagenen Logins gesperrt sind.

Wann nicht

Außerhalb von WebDAV verstehen generische Clients 409 besser.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 4918 §11.3

Beispiel
HTTP/1.1 423 Locked
424Failed Dependency

Die Aktion ist fehlgeschlagen, weil eine andere Aktion, von der sie abhing, fehlgeschlagen ist.

WebDAV

Wann verwenden

In einem WebDAV-PROPPATCH oder einer Batch-Anfrage für Elemente, die nicht versucht wurden, weil ein früheres Element fehlgeschlagen ist.

Wann nicht

Nicht für Ausfälle vorgelagerter Dienste; das sind 502 oder 503.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 4918 §11.4

Beispiel
HTTP/1.1 424 Failed Dependency
425Too Early

Der Server verarbeitet eine Anfrage nicht, die in TLS-1.3-Early-Data (0-RTT) gesendet wurde, weil sie wiederholt eingespielt werden könnte.

Wann verwenden

CDNs und Server, die 0-RTT akzeptieren, aber nicht idempotente Anfragen (POST) in Early Data ablehnen. Der Client versucht es nach Abschluss des Handshakes erneut.

Wann nicht

Kein allgemeiner „später versuchen“-Code; nimm dafür 503 mit Retry-After.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 8470 §5.2

Beispiel
HTTP/1.1 425 Too Early
426Upgrade Required

Der Server lehnt die Anfrage mit dem aktuellen Protokoll ab, würde sie aber nach einem im Upgrade-Header genannten Upgrade annehmen.

Wann verwenden

TLS oder ein neueres Protokoll wird verlangt, oder ein WebSocket-Endpunkt erhält eine einfache HTTP-Anfrage. Muss einen Upgrade-Header enthalten.

Wann nicht

Für HTTP zu HTTPS auf Websites ist eine 301- oder 308-Umleitung plus HSTS der übliche Weg.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.5.22

Beispiel
HTTP/1.1 426 Upgrade Required
Upgrade: TLS/1.3, HTTP/1.1
Connection: Upgrade
428Precondition Required

Der Server verlangt, dass die Anfrage bedingt ist (If-Match usw.), um verlorene Aktualisierungen zu verhindern.

Wann verwenden

APIs, die darauf bestehen, dass Clients vor einem PUT, PATCH oder DELETE If-Match mit dem zuletzt gesehenen ETag senden.

Wann nicht

Nimm 412, wenn eine Vorbedingung gesendet wurde und fehlgeschlagen ist; 428 ist für den Fall, dass keine gesendet wurde.

Caching

Darf von Caches nicht gespeichert werden

Definiert in

RFC 6585 §3

Beispiel
HTTP/1.1 428 Precondition Required
Content-Type: application/json

{"error": "Send If-Match with the current ETag"}
429Too Many Requests

Der Client hat in einem bestimmten Zeitraum zu viele Anfragen gesendet (Rate Limiting).

Wann verwenden

API-Ratenlimits, Login-Drosselung, Schutz vor Scraping. Füge Retry-After hinzu, damit sich gut programmierte Clients an die Wartezeit halten können; RateLimit-Header helfen ebenfalls.

Wann nicht

Für einen Server, der für alle überlastet ist, nimm 503. Googlebot behandelt 429 wie 503 und verlangsamt das Crawling.

Caching

Darf von Caches nicht gespeichert werden

Definiert in

RFC 6585 §4

Beispiel
HTTP/1.1 429 Too Many Requests
Retry-After: 60
Content-Type: application/json

{"error": "Rate limit exceeded: 100 requests per minute"}
431Request Header Fields Too Large

Die Header sind einzeln oder zusammen zu groß für den Server.

Wann verwenden

Meist übergroße Cookies, die sich auf einer Domain angesammelt haben, oder riesige Authorization-Tokens. Cookies löschen behebt es für Benutzer oft.

Wann nicht

Für eine lange URL nimm 414, für einen großen Body 413.

Caching

Darf von Caches nicht gespeichert werden

Definiert in

RFC 6585 §5

Beispiel
HTTP/1.1 431 Request Header Fields Too Large
440Login Time-outInoffiziell · Microsoft IIS / Exchange

Die Sitzung des Clients ist abgelaufen, und er muss sich erneut anmelden (Outlook Web Access und andere IIS-Anwendungen).

Wann verwenden

In Exchange/OWA-Umgebungen zu sehen.

Wann nicht

Nimm in deinen eigenen Anwendungen 401 für abgelaufene Sitzungen.

Caching

Nicht zutreffend

Definiert in

Microsoft IIS (nicht im IANA-Register)

Beispiel
HTTP/1.1 440 Login Time-out
444No ResponseInoffiziell · nginx

nginx-interner Code: „return 444;“ schließt die Verbindung, ohne überhaupt eine Antwort zu senden.

Wann verwenden

Verwerfen von Anfragen durch Scanner, von Anfragen mit unbekanntem Host-Header in einem Default-Server-Block oder von missbräuchlichen Clients. Er erscheint in den nginx-Logs; der Client sieht eine leere Antwort.

Wann nicht

Der Client erhält nie einen 444, im Client-Code muss er also nicht behandelt werden.

Caching

Nicht zutreffend

Definiert in

nginx (nicht im IANA-Register)

Beispiel
server {
  listen 80 default_server;
  return 444;
}
449Retry WithInoffiziell · Microsoft

Microsoft-Erweiterung: Die Anfrage soll wiederholt werden, nachdem der Client eine bestimmte Aktion ausgeführt hat.

Wann verwenden

In einigen Microsoft-Diensten zu sehen (Exchange ActiveSync; Azure Cosmos DB verwendet 449 für wiederholbare Schreibkonflikte).

Wann nicht

Nicht standardisiert; nimm in deinen eigenen APIs 409 oder 503 mit Retry-After.

Caching

Nicht zutreffend

Definiert in

Microsoft IIS (nicht im IANA-Register)

Beispiel
HTTP/1.1 449 Retry With
450Blocked by Windows Parental ControlsInoffiziell · Microsoft

Der Jugendschutz von Windows hat den Zugriff auf die Seite blockiert.

Wann verwenden

Wird auf Windows-Systemen mit aktiviertem Jugendschutz erzeugt.

Wann nicht

Nicht von Servern senden.

Caching

Nicht zutreffend

Definiert in

Microsoft (nicht im IANA-Register)

Beispiel
HTTP/1.1 450 Blocked by Windows Parental Controls
451Unavailable For Legal ReasonsStandardmäßig cachebar

Der Zugriff wird aufgrund einer rechtlichen Anforderung verweigert: Gerichtsbeschluss, staatliche Zensur oder Geoblocking aus rechtlichen Gründen.

Wann verwenden

In einem Rechtsraum gesperrte Inhalte (Sanktionen, DSGVO-bedingte Geoblocks, Löschanordnungen). Ein Link-Header mit rel="blocked-by" kann nennen, wer die Sperre verhängt hat.

Wann nicht

Nicht für gewöhnliche verweigerte Berechtigungen (403) oder für Inhalte, die du einfach entfernt hast (410).

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 7725 §3

Beispiel
HTTP/1.1 451 Unavailable For Legal Reasons
Link: <https://authority.example/>; rel="blocked-by"
460Client closed connection (AWS ELB)Inoffiziell · AWS Application Load Balancer

Wird von einem AWS ALB protokolliert, wenn der Client die Verbindung vor Ablauf des Idle-Timeouts geschlossen hat.

Wann verwenden

In ALB-Zugriffslogs zu sehen; meist ein Client mit kürzerem Timeout als die Verarbeitungszeit des Ziels.

Wann nicht

Wird nicht an Clients gesendet.

Caching

Nicht zutreffend

Definiert in

AWS Elastic Load Balancing (nicht im IANA-Register)

Beispiel
elb_status_code=460
463Too many IPs in X-Forwarded-For (AWS ELB)Inoffiziell · AWS Application Load Balancer

Der ALB hat einen X-Forwarded-For-Header mit mehr als 30 IP-Adressen erhalten.

Wann verwenden

Meist eine Proxy-Schleife, die ständig Adressen anhängt.

Wann nicht

Nicht für den Einsatz in Anwendungen.

Caching

Nicht zutreffend

Definiert in

AWS Elastic Load Balancing (nicht im IANA-Register)

Beispiel
HTTP/1.1 463
494Request Header Too LargeInoffiziell · nginx

nginx-interner Code für Header, die large_client_header_buffers überschreiten; der Client erhält einen 400.

Wann verwenden

Erscheint in nginx-Logs und in der error_page-Konfiguration.

Wann nicht

Der Standardcode ist 431.

Caching

Nicht zutreffend

Definiert in

nginx (nicht im IANA-Register)

Beispiel
error_page 494 /header-too-large.html;
495SSL Certificate ErrorInoffiziell · nginx

nginx-intern: Der Client hat ein ungültiges Client-Zertifikat vorgelegt (Mutual TLS). Wird an den Client als 400 gesendet.

Wann verwenden

Eigene Fehlerseiten für mTLS-Fehler.

Wann nicht

Kein Statuscode, der tatsächlich übertragen wird.

Caching

Nicht zutreffend

Definiert in

nginx (nicht im IANA-Register)

Beispiel
error_page 495 /bad-client-cert.html;
496SSL Certificate RequiredInoffiziell · nginx

nginx-intern: Ein Client-Zertifikat war erforderlich, wurde aber nicht vorgelegt. Wird an den Client als 400 gesendet.

Wann verwenden

Eigene Fehlerseiten, wenn ssl_verify_client aktiviert ist.

Wann nicht

Kein Statuscode, der tatsächlich übertragen wird.

Caching

Nicht zutreffend

Definiert in

nginx (nicht im IANA-Register)

Beispiel
error_page 496 /client-cert-required.html;
497HTTP Request Sent to HTTPS PortInoffiziell · nginx

nginx-intern: Eine einfache HTTP-Anfrage ist auf einem Port eingegangen, der TLS erwartet. Wird an den Client als 400 gesendet.

Wann verwenden

Ein gängiger Trick ist „error_page 497 =301 https://$host$request_uri;“, um solche Anfragen auf HTTPS umzuleiten.

Wann nicht

Kein Statuscode, der tatsächlich übertragen wird.

Caching

Nicht zutreffend

Definiert in

nginx (nicht im IANA-Register)

Beispiel
error_page 497 =301 https://$host:$server_port$request_uri;
498Invalid TokenInoffiziell · Esri ArcGIS Server

ArcGIS gibt ihn bei einem abgelaufenen oder anderweitig ungültigen Token zurück.

Wann verwenden

Nur relevant beim Aufruf von ArcGIS-Diensten.

Wann nicht

Nimm in deinen eigenen APIs 401 für ungültige Tokens.

Caching

Nicht zutreffend

Definiert in

Esri ArcGIS (nicht im IANA-Register)

Beispiel
HTTP/1.1 498 Invalid Token
499Client Closed RequestInoffiziell · nginx

nginx protokolliert 499, wenn der Client die Verbindung geschlossen hat, bevor nginx eine Antwort gesendet hat.

Wann verwenden

In Zugriffslogs zu sehen: Benutzer, die die Seite verlassen, mobile Clients mit Timeout oder ein Load Balancer vor nginx mit kürzerem Timeout. Viele 499 auf einem Endpunkt bedeuten meist, dass er zu langsam ist.

Wann nicht

Der Client erhält ihn nie. Esri verwendet 499 außerdem für „Token Required“.

Caching

Nicht zutreffend

Definiert in

nginx (nicht im IANA-Register)

Beispiel
203.0.113.9 - - [16/Oct/2026:10:12:01 +0000] "GET /report HTTP/1.1" 499 0

5xx Server-Fehler

500Internal Server Error

Der Server ist auf einen unerwarteten Zustand gestoßen, der ihn daran gehindert hat, die Anfrage zu erfüllen.

Wann verwenden

Unbehandelte Exceptions und Bugs. Er ist der generische Fallback, wenn kein spezifischerer 5xx-Code zutrifft.

Wann nicht

Verwende ihn nicht für Fehler des Clients (4xx). Gib in der Produktion keine Stacktraces im Body preis; protokolliere sie stattdessen.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.6.1

Beispiel
HTTP/1.1 500 Internal Server Error
Content-Type: application/problem+json

{"title": "Internal Server Error", "traceId": "4bf92f35"}
501Not ImplementedStandardmäßig cachebar

Der Server unterstützt die benötigte Funktionalität nicht, typischerweise eine HTTP-Methode, die er überhaupt nicht kennt.

Wann verwenden

Eine Anfrage mit einer unbekannten Methode (z. B. eine WebDAV-Methode auf einem einfachen Webserver) oder eine Funktion, die der Server bewusst noch nicht umgesetzt hat.

Wann nicht

Wenn die Methode bekannt, auf dieser URL aber nicht erlaubt ist, nimm 405.

Caching

Standardmäßig cachebar (heuristisch cachebar)

Definiert in

RFC 9110 §15.6.2

Beispiel
HTTP/1.1 501 Not Implemented
502Bad Gateway

Ein Gateway oder Proxy hat vom vorgelagerten Server eine ungültige Antwort erhalten.

Wann verwenden

Wird von Reverse-Proxys und Load Balancern (nginx, Cloudflare, AWS ALB) gesendet, wenn der App-Server abgestürzt ist, die Verbindung geschlossen oder Unsinn zurückgegeben hat.

Wann nicht

Anwendungscode muss ihn selten senden, außer API-Gateways, die einen anderen Dienst aufrufen, der fehlgeschlagen ist.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.6.3

Beispiel
HTTP/1.1 502 Bad Gateway
Server: nginx
503Service Unavailable

Der Server kann die Anfrage gerade nicht bearbeiten: überlastet oder wegen Wartung nicht verfügbar. Voraussichtlich vorübergehend.

Wann verwenden

Geplante Wartung, Lastabwurf, Ausfall einer Abhängigkeit. Füge Retry-After hinzu. Suchmaschinen behalten die Seite bei kurzen 503-Phasen im Index, anders als bei einer Wartungsseite mit 200 oder einem 404.

Wann nicht

Lass eine Website nicht tagelang auf 503; Google entfernt URLs, die ihn dauerhaft zurückgeben, irgendwann aus dem Index.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.6.4

Beispiel
HTTP/1.1 503 Service Unavailable
Retry-After: 3600
504Gateway Timeout

Ein Gateway oder Proxy hat vom vorgelagerten Server nicht rechtzeitig eine Antwort erhalten.

Wann verwenden

Wird von Proxys und Load Balancern gesendet, wenn die Anwendung länger braucht als das Proxy-Timeout (nginx proxy_read_timeout ist standardmäßig 60 Sekunden).

Wann nicht

Bei langen Aufgaben erhöhe nicht einfach die Timeouts; gib 202 zurück und verarbeite asynchron.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.6.5

Beispiel
HTTP/1.1 504 Gateway Timeout
Server: awselb/2.0
505HTTP Version Not Supported

Der Server unterstützt die in der Anfrage verwendete HTTP-Hauptversion nicht.

Wann verwenden

Ein Server erhält eine Protokollversion, die er nicht sprechen kann.

Wann nicht

Selten zu sehen; Clients handeln HTTP/2 und HTTP/3 über ALPN und Alt-Svc aus, nicht durch Ausprobieren.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 9110 §15.6.6

Beispiel
HTTP/1.1 505 HTTP Version Not Supported
506Variant Also Negotiates

Fehler in der Serverkonfiguration: Die gewählte Variante ist selbst für Negotiation eingerichtet, wodurch eine Schleife entsteht.

Transparente Content Negotiation (experimentell)

Wann verwenden

Nur Server, die die transparente Content Negotiation nach RFC 2295 umsetzen.

Wann nicht

Nicht für Anwendungsfehler.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 2295 §8.1

Beispiel
HTTP/1.1 506 Variant Also Negotiates
507Insufficient Storage

Der Server kann nicht speichern, was zur Erfüllung der Anfrage nötig ist.

WebDAV

Wann verwenden

WebDAV- oder Dateispeicher-APIs, wenn die Festplatte oder das Kontingent des Benutzers voll ist.

Wann nicht

Für einen einzelnen Upload, der ein Größenlimit überschreitet, ist 413 klarer.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 4918 §11.5

Beispiel
HTTP/1.1 507 Insufficient Storage
508Loop Detected

Der Server hat einen Vorgang abgebrochen, weil er eine Endlosschleife gefunden hat (WebDAV-Bindings mit Depth: infinity).

WebDAV

Wann verwenden

WebDAV-Server. Shared Hosts auf Basis von CloudLinux senden 508 außerdem als „Resource Limit Is Reached“, wenn ein Konto seine Limits erreicht – das ist nicht standardkonform.

Wann nicht

Nicht für Umleitungsschleifen; die sind ein clientseitiger Fehler, den der Browser selbst meldet.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 5842 §7.2

Beispiel
HTTP/1.1 508 Loop Detected
509Bandwidth Limit ExceededInoffiziell · Apache bw_mod / cPanel

Das Hosting-Konto hat sein Bandbreitenkontingent überschritten.

Wann verwenden

Control Panels von Shared-Hosting-Anbietern.

Wann nicht

Nimm in deinen eigenen Systemen 503 oder 429.

Caching

Nicht zutreffend

Definiert in

Apache / cPanel (nicht im IANA-Register)

Beispiel
HTTP/1.1 509 Bandwidth Limit Exceeded
510Not ExtendedVeraltet

Die Anfrage hat die Richtlinie für den Zugriff auf die Ressource gemäß HTTP Extension Framework nicht erfüllt.

Im IANA-Register als obsolet markiert: RFC 2774 wurde auf Historic gesetzt.

Wann verwenden

Nichts Aktuelles; das Extension Framework wurde nie breit umgesetzt.

Wann nicht

Sende ihn nicht.

Caching

Nur mit explizitem Cache-Control oder Expires cachebar

Definiert in

RFC 2774 §7

Beispiel
HTTP/1.1 510 Not Extended
511Network Authentication Required

Der Client muss sich authentifizieren, um Netzwerkzugang zu erhalten: ein Captive Portal.

Wann verwenden

WLAN-Portale in Hotels, Flughäfen und Cafés, die den Datenverkehr abfangen, bis sich der Benutzer anmeldet oder die Bedingungen akzeptiert.

Wann nicht

Ursprungsserver dürfen ihn nie senden; er ist nur für abfangende Netzwerk-Proxys gedacht.

Caching

Darf von Caches nicht gespeichert werden

Definiert in

RFC 6585 §6

Beispiel
HTTP/1.1 511 Network Authentication Required
Content-Type: text/html

<meta http-equiv="refresh" content="0; url=https://login.example.net/">
520Web Server Returned an Unknown ErrorInoffiziell · Cloudflare

Der Ursprungsserver hat Cloudflare eine leere, unbekannte oder unerwartete Antwort geliefert.

Wann verwenden

Prüfe die Logs des Ursprungsservers: Abstürze, Verbindungsabbrüche, Header über dem Cloudflare-Limit oder eine leere Antwort.

Wann nicht

Nur Cloudflare sendet ihn.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/2 520
server: cloudflare
521Web Server Is DownInoffiziell · Cloudflare

Cloudflare konnte keine Verbindung zum Ursprungsserver herstellen: Die Verbindung wurde abgelehnt.

Wann verwenden

Der Webserver am Ursprung ist gestoppt, oder eine Firewall blockiert die IP-Bereiche von Cloudflare.

Wann nicht

Nur Cloudflare sendet ihn.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/2 521
server: cloudflare
522Connection Timed OutInoffiziell · Cloudflare

Bei Cloudflare ist beim Aufbau einer TCP-Verbindung zum Ursprungsserver ein Timeout aufgetreten.

Wann verwenden

Ursprungsserver überlastet, Pakete von einer Firewall verworfen oder eine falsche Ursprungs-IP im DNS.

Wann nicht

Nur Cloudflare sendet ihn.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/2 522
server: cloudflare
523Origin Is UnreachableInoffiziell · Cloudflare

Cloudflare erreicht den Ursprungsserver überhaupt nicht, typischerweise ein Routing-Problem oder ein falscher DNS-Eintrag.

Wann verwenden

Prüfe, ob die DNS-Einträge A/AAAA auf die richtige, erreichbare IP zeigen.

Wann nicht

Nur Cloudflare sendet ihn.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/2 523
server: cloudflare
524A Timeout OccurredInoffiziell · Cloudflare

Cloudflare hat sich mit dem Ursprungsserver verbunden, aber dieser hat innerhalb des Timeouts (standardmäßig 100 Sekunden) keine HTTP-Antwort gesendet.

Wann verwenden

Lang laufende Anfragen: Verlagere die Arbeit in einen Hintergrundjob und frage den Status ab, oder streame den Fortschritt.

Wann nicht

Nur Cloudflare sendet ihn.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/2 524
server: cloudflare
525SSL Handshake FailedInoffiziell · Cloudflare

Der TLS-Handshake zwischen Cloudflare und dem Ursprungsserver ist fehlgeschlagen.

Wann verwenden

Der Ursprungsserver lauscht nicht auf 443, hat kein Zertifikat, keine gemeinsamen Cipher-Suites oder SNI ist nicht konfiguriert, während der SSL-Modus Full oder Full (strict) ist.

Wann nicht

Nur Cloudflare sendet ihn.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/2 525
server: cloudflare
526Invalid SSL CertificateInoffiziell · Cloudflare

Im Modus Full (strict) konnte Cloudflare das Zertifikat des Ursprungsservers nicht validieren: abgelaufen, selbstsigniert oder falscher Hostname.

Wann verwenden

Installiere auf dem Ursprungsserver ein gültiges Zertifikat oder ein Cloudflare-Origin-CA-Zertifikat.

Wann nicht

Nur Cloudflare sendet ihn.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/2 526
server: cloudflare
527Railgun ErrorInoffiziell · Cloudflare (eingestellt)Veraltet

Verbindungsproblem zwischen Cloudflare und einem Railgun-Listener am Ursprungsserver. Cloudflare hat Railgun eingestellt.

Wann verwenden

Nur noch historisch.

Wann nicht

Nur Cloudflare hat ihn gesendet.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/1.1 527 Railgun Error
530Origin DNS / 1xxx errorInoffiziell · Cloudflare

Wird mit einer Cloudflare-Fehlerseite 1xxx zurückgegeben (etwa 1016 Origin DNS error); der auf der Seite angezeigte 1xxx-Code ist die eigentliche Ursache.

Wann verwenden

Schlag die 1xxx-Fehlernummer nach, die auf der Seite angezeigt wird.

Wann nicht

Nur CDNs und Hoster senden ihn.

Caching

Nicht zutreffend

Definiert in

Cloudflare (nicht im IANA-Register)

Beispiel
HTTP/2 530
server: cloudflare
561Unauthorized (AWS ELB)Inoffiziell · AWS Application Load Balancer

Die integrierte Authentifizierung des ALB (OIDC oder Cognito) ist beim Identitätsanbieter fehlgeschlagen.

Wann verwenden

Prüfe die IdP-Konfiguration der Listener-Regel des ALB.

Wann nicht

Nicht für den Einsatz in Anwendungen.

Caching

Nicht zutreffend

Definiert in

AWS Elastic Load Balancing (nicht im IANA-Register)

Beispiel
HTTP/1.1 561
598Network Read Timeout ErrorInoffiziell · Einige HTTP-Proxys

Wird von einigen Proxys verwendet, um ein Lese-Timeout hinter dem Proxy zu signalisieren.

Wann verwenden

Selten; er kann bei bestimmten Proxy-Produkten auftauchen.

Wann nicht

Nimm 504.

Caching

Nicht zutreffend

Definiert in

Informal convention (nicht im IANA-Register)

Beispiel
HTTP/1.1 598
599Network Connect Timeout ErrorInoffiziell · Einige HTTP-Proxys und -Clients

Wird von einigen Proxys und Client-Bibliotheken (etwa dem HTTP-Client von Tornado) für ein Verbindungs-Timeout verwendet.

Wann verwenden

Selten.

Wann nicht

Nimm 504 für Proxys.

Caching

Nicht zutreffend

Definiert in

Informal convention (nicht im IANA-Register)

Beispiel
HTTP/1.1 599

Eine statische Referenz, die in deinem Browser läuft; deine Suchen werden nirgendwohin gesendet. Alle kostenlosen Tools ansehen.

Ein Problem gefunden oder etwas, das besser sein könnte? Wir lesen jede Nachricht und beheben Fehler schnell.

Diese Liste der HTTP-Statuscodes umfasst jeden Code im IANA-Register, von 100 Continue bis 511 Network Authentication Required, mit Bedeutung, Einsatzzweck, wann man ihn nicht verwenden sollte, ob Caches ihn speichern dürfen, und dem RFC-Abschnitt, der ihn definiert. Tippe eine Nummer, eine Klasse wie 4xx oder ein Wort wie „redirect“ oder „rate limit“ ein, um zu filtern, und verlinke direkt auf jeden Code mit einem Anker wie #404 oder #503.

Die offiziellen Einträge folgen RFC 9110 (2022), der RFC 7231 ersetzt und einige Codes umbenannt hat: 413 heißt jetzt Content Too Large und 422 Unprocessable Content. Codes, die du in Logs siehst, aber nicht im Register findest, wie nginx 499 oder Cloudflare 522, sind ebenfalls enthalten und als inoffiziell markiert, zusammen mit dem System, das sie sendet. Es ist ein Nachschlagewerk, kein Monitoring: Es ruft keine URLs ab und prüft nicht, welchen Status eine Live-Website zurückgibt.

So funktioniert’s

  1. Tippe einen Code (503), eine Klasse (4xx) oder ein Stichwort (timeout, redirect, cache) ins Suchfeld. Die Ergebnisse filtern sich beim Tippen.
  2. Mit den Klassen-Schaltflächen siehst du nur 1xx-, 2xx-, 3xx-, 4xx- oder 5xx-Codes; entferne das Häkchen bei „Inoffizielle Codes einbeziehen“, um herstellerspezifische auszublenden.
  3. Klicke auf einen Code, um ihn aufzuklappen: Bedeutung, Einsatzzweck, wann nicht, Caching-Verhalten, der definierende RFC und eine Beispielantwort.
  4. Mit „Link zu diesem Code kopieren“ teilst du einen direkten Link wie /tools/http-status-codes#429.

Häufige Fragen

Was ist der Unterschied zwischen 401 und 403?

401 Unauthorized bedeutet, dass die Anfrage keine gültigen Anmeldedaten hat: Der Client ist nicht angemeldet, oder das Token ist abgelaufen. Der Server muss einen WWW-Authenticate-Header senden, der angibt, wie man sich authentifiziert. 403 Forbidden bedeutet, dass der Server weiß, wer der Client ist (oder es nicht wissen muss), und trotzdem ablehnt; erneutes Anmelden hilft nicht. Kurz gesagt: 401 heißt „Wer bist du?“ und 403 „Ich weiß es, und nein.“

Sollte ich für eine permanente Weiterleitung 301 oder 308 verwenden?

Beide sind permanent, und beide geben Ranking-Signale bei Google weiter. Der Unterschied liegt in der Methode: Bei einer 301 dürfen Browser aus einem POST ein GET machen, während 308 verlangt, dass der Client dieselbe Methode und denselben Body wiederholt. Für normale Seitenumzüge reicht 301; für einen API-Endpunkt, der POST oder PUT empfängt, nimm 308. Dasselbe Paar gibt es für temporäre Weiterleitungen: 302 darf die Methode ändern, 307 nicht.

Was bedeutet 499 in nginx-Logs?

499 Client Closed Request ist ein reiner nginx-Code. Er wird protokolliert, wenn der Client die Verbindung geschlossen hat, bevor nginx eine Antwort gesendet hat – der Client erhält also nie tatsächlich eine 499. Vereinzelte 499er sind Nutzer, die wegnavigieren; viele an einem Endpunkt bedeuten meist, dass er zu langsam ist und Clients oder ein vorgelagerter Load Balancer zuerst in einen Timeout laufen.

Was ist der Unterschied zwischen 502, 503 und 504?

Alle drei kommen von einem Server, der vor einem anderen sitzt. 502 Bad Gateway bedeutet, dass der Proxy von der Upstream-App eine ungültige Antwort oder eine abgebrochene Verbindung erhalten hat. 503 Service Unavailable bedeutet, dass der Server vorübergehend keine Anfragen bearbeiten kann, meist wegen Überlastung oder Wartung, und sollte Retry-After enthalten. 504 Gateway Timeout bedeutet, dass der Proxy das Warten auf die Antwort des Upstreams aufgegeben hat.

Ist 418 I'm a teapot ein echter Statuscode?

Er begann als Aprilscherz in RFC 2324 (1998) und wurde von so viel Software umgesetzt, dass RFC 9110 die 418 inzwischen als „(Unused)“ führt: reserviert, damit sie nie eine echte Bedeutung bekommt. Für echte Probleme solltest du sie nicht senden, als Easter Egg kannst du sie aber bedenkenlos behalten.

Welche Statuscodes dürfen standardmäßig gecacht werden?

RFC 9110 nennt 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414 und 501 als heuristisch cachebar – ein Cache darf sie also auch ohne Cache-Control oder Expires speichern. RFC 7725 ergänzt 451. Andere Codes, darunter 302 und 307, werden nur gecacht, wenn die Antwort explizite Frische-Informationen enthält, und laut RFC 6585 dürfen 428, 429, 431 und 511 überhaupt nicht gespeichert werden.

Die fünf Klassen auf einen Blick

• 1xx Informational: Zwischenantworten vor der endgültigen. Du hast selten direkt mit ihnen zu tun; 101 (WebSocket-Upgrade) und 103 (Early Hints) sind die, die in der Praxis zählen.

• 2xx Success: Die Anfrage hat funktioniert. 200 für eine normale Antwort, 201, wenn etwas erstellt wurde (mit Location-Header), 204, wenn es bewusst keinen Body gibt.

• 3xx Redirection: Der Client muss woanders nachsehen. 301/308 für permanente Umzüge, 302/307 für temporäre, 303 nach einem Formular-POST, 304, wenn die gecachte Kopie noch gültig ist.

• 4xx Client Error: Die Anfrage ist fehlerhaft, und eine unveränderte Wiederholung schlägt wieder fehl. 400 fehlerhaft aufgebaut, 401 nicht authentifiziert, 403 nicht erlaubt, 404 nicht gefunden, 409 Konflikt, 422 Validierung fehlgeschlagen, 429 Rate Limit erreicht.

• 5xx Server Error: Die Anfrage ist womöglich in Ordnung, aber der Server hat versagt. 500 ist ein Bug, 502/504 sind Fehler zwischen Proxy und Upstream, 503 ist vorübergehende Nichtverfügbarkeit.

Den richtigen Code in einer API wählen

Gib den spezifischsten Code zurück, mit dem ein generischer Client etwas anfangen kann, und pack die Details in den Body. Ein HTTP-Client mit Wiederholungslogik, ein CDN oder ein Monitoring-System weiß, was 429 und 503 bedeuten, ohne dein JSON zu lesen, kann aber eine 200 mit {"error": true} nicht deuten. RFC 9457 (Problem Details) definiert eine Standard-JSON-Struktur für Fehler-Bodies.

Eine praktische Zuordnung für die meisten JSON-APIs: 400 für nicht parsebare Eingaben, 422 für wohlgeformte Eingaben, die die Validierung nicht bestehen, 401, wenn das Token fehlt oder abgelaufen ist, 403, wenn dem Nutzer die Berechtigung fehlt, 404 für unbekannte IDs (auch, um Ressourcen zu verbergen, die ein Nutzer nicht sehen darf), 409 für Duplikate und Versionskonflikte, 412, wenn ein If-Match-ETag veraltet ist, 429 mit Retry-After für Rate Limits und 503 mit Retry-After für geplante Ausfallzeiten.

Erfinde keine neuen Nummern. Clients behandeln einen unbekannten Code wie das x00 seiner Klasse (ein unbekannter 4xx wird wie 400 behandelt), ein eigener Code 461 bringt dir also nichts gegenüber 400 plus einer klaren Meldung.

Statuscodes und SEO

Suchmaschinen nehmen Statuscodes wörtlich. Eine 301 oder 308 überträgt die Signale der alten URL auf die neue; eine 302 oder 307 sagt Google, dass die alte URL im Index bleiben soll. 404 und 410 entfernen eine Seite beide mit der Zeit aus dem Index. Eine 200-Seite, auf der „nicht gefunden“ steht, ist ein Soft 404, den Google erkennt und in der Search Console meldet. Bei Wartungsarbeiten erhält ein kurzer Zeitraum mit 503 und Retry-After die Rankings, während eine 200-Seite mit „Wir sind gleich zurück“ deinen Inhalt in den Suchergebnissen ersetzen kann. Außerdem verlangsamt der Googlebot seine Crawling-Rate, wenn er 429, 500 oder 503 sieht.

Ähnliche kostenlose Tools

  • User-Agent-Parser — Sieh deinen eigenen User-Agent und deine Client Hints oder zerlege einen beliebigen UA-String in Browser, Engine, Betriebssystem, Gerät und CPU. Stapelmodus mit CSV.
  • JSON Formatter — JSON formatieren, minifizieren und validieren, Parse-Fehler mit Zeile und Spalte. Im Browser, ohne Upload.
  • Docker Run ⇄ Compose — Mach aus einem docker-run-Befehl einen Service in einer docker-compose.yml – oder aus einem Compose-Service wieder docker run.
  • Regex-Tester — Teste einen regulären Ausdruck an Beispieltext mit Live-Hervorhebung der Treffer, Capture Groups und Vorschau fürs Ersetzen. Kostenlos, im Browser.