HTTP-Statuscodes
HTTP Status Reference
Erklärt jeden Statuscode mit seiner Bedeutung laut Spezifikation, seiner Cachebarkeit und den Fehlern, die damit gemacht werden.
Eine durchsuchbare Referenz für jeden HTTP-Statuscode – was er bedeutet, welcher RFC ihn definiert, ob ein Cache ihn standardmäßig speichern darf und mit welchem Header er gesendet werden muss. Die Suche findet Code, Name und Zusammenfassung und versteht Suchbegriffe auf Englisch, Koreanisch, Japanisch, Chinesisch (vereinfacht) und Spanisch – nicht auf Deutsch.
Durchsucht Code, Name, Kurzfassung und Anmerkungen — auf Englisch, Koreanisch, Japanisch, Chinesisch (vereinfacht) und Spanisch.
404 Not Found
404Not Found
Unter dieser URL liegt keine Ressource.
Client-Fehler — Der Fehler liegt bei der Anfrage. Sie unverändert zu wiederholen scheitert genauso.
RFC 9110 §15.5.5Standardmäßig cachefähig
ja
Standardmäßig cachefähig — eine Tatsache, die jeden beim ersten Mal überrascht, wenn ein CDN weiter 404 für eine Seite liefert, die es inzwischen gibt.
62 von 62 Codes
| Code | Name | Bedeutet | Cachefähig |
|---|---|---|---|
| 100 | Continue | Der Client darf fortfahren und den Anfrage-Body senden. | nein |
| 101 | Switching Protocols | Der Server wechselt zu dem Protokoll, das der Client verlangt hat. | nein |
| 102 | Processing | WebDAV: An der Anfrage wird gearbeitet. | nein |
| 103 | Early Hints | Vorläufige Header, damit der Client schon vor der eigentlichen Antwort mit dem Vorladen beginnen kann. | nein |
| 200 | OK | Die Anfrage war erfolgreich. | ja |
| 201 | Created | Eine neue Ressource wurde angelegt. | nein |
| 202 | Accepted | Die Anfrage wurde angenommen, aber noch nicht ausgeführt. | nein |
| 203 | Non-Authoritative Information | Ein Proxy hat die weitergereichte Antwort verändert. | ja |
| 204 | No Content | Erfolg, und absichtlich ohne Body. | ja |
| 205 | Reset Content | Erfolg; der Client sollte das abgeschickte Formular leeren. | nein |
| 206 | Partial Content | Der angeforderte Bytebereich. | ja |
| 207 | Multi-Status | WebDAV: ein XML-Body mit einem Status je Teilanfrage. | nein |
| 208 | Already Reported | WebDAV: Dieses Element wurde bereits aufgezählt. | nein |
| 226 | IM Used | Die Antwort ist das Ergebnis angewandter Instanzmanipulationen. | nein |
| 300 | Multiple Choices | Es gibt mehrere Darstellungen; wählen Sie eine. | ja |
| 301 | Moved Permanently | Die Ressource hat dauerhaft eine neue URL. | ja |
| 302 | Found | Eine vorübergehende Weiterleitung. | nein |
| 303 | See Other | Holen Sie die andere URL mit GET. | nein |
| 304 | Not Modified | Die Kopie im Cache ist noch gültig. | nein |
| 305 | Use Proxy | Veraltet: Der Client solle den genannten Proxy verwenden. | nein |
| 307 | Temporary Redirect | Eine vorübergehende Weiterleitung, die die Methode beibehält. | nein |
| 308 | Permanent Redirect | Eine dauerhafte Weiterleitung, die die Methode beibehält. | ja |
| 400 | Bad Request | Die Anfrage ist fehlerhaft aufgebaut, der Server verarbeitet sie nicht. | nein |
| 401 | Unauthorized | Eine Authentifizierung ist nötig, oder die vorgelegten Anmeldedaten wurden abgelehnt. | nein |
| 402 | Payment Required | Reserviert, und nie mit einer Bedeutung versehen. | nein |
| 403 | Forbidden | Der Server hat verstanden und verweigert. | nein |
| 404 | Not Found | Unter dieser URL liegt keine Ressource. | ja |
| 405 | Method Not Allowed | Die URL gibt es; diese Methode passt nicht dazu. | ja |
| 406 | Not Acceptable | Nichts, was der Server erzeugen kann, passt zum `Accept`-Header. | nein |
| 407 | Proxy Authentication Required | Der Proxy verlangt Anmeldedaten. | nein |
| 408 | Request Timeout | Der Client hat zu lange gebraucht, die Anfrage zu senden. | nein |
| 409 | Conflict | Die Anfrage steht im Widerspruch zum aktuellen Zustand. | nein |
| 410 | Gone | Es war hier und kommt absichtlich nicht zurück. | ja |
| 411 | Length Required | Ein `Content-Length`-Header ist erforderlich. | nein |
| 412 | Precondition Failed | Eine `If-Match`- oder `If-Unmodified-Since`-Bedingung war nicht erfüllt. | nein |
| 413 | Content Too Large | Der Body ist größer, als der Server akzeptiert. | nein |
| 414 | URI Too Long | Die URL ist länger, als der Server akzeptiert. | ja |
| 415 | Unsupported Media Type | Der `Content-Type` des Bodys gehört nicht zu denen, die der Server verarbeitet. | nein |
| 416 | Range Not Satisfiable | Der angeforderte Bereich liegt außerhalb der Ressource. | nein |
| 417 | Expectation Failed | Der `Expect`-Header lässt sich nicht erfüllen. | nein |
| 418 | I'm a teapot | Ein Aprilscherz von 1998, der nie wieder verschwand. | nein |
| 421 | Misdirected Request | Dieser Server kann für diese Autorität keine Antwort erzeugen. | nein |
| 422 | Unprocessable Content | Wohlgeformt, aber semantisch falsch. | nein |
| 423 | Locked | WebDAV: Die Ressource ist gesperrt. | nein |
| 424 | Failed Dependency | WebDAV: Eine vorhergehende Anfrage der Folge ist fehlgeschlagen. | nein |
| 425 | Too Early | Der Server riskiert es nicht, eine Early-Data-Anfrage zu wiederholen. | nein |
| 426 | Upgrade Required | Der Client muss das Protokoll wechseln. | nein |
| 428 | Precondition Required | Der Server verlangt, dass die Anfrage bedingt gestellt wird. | nein |
| 429 | Too Many Requests | Ratenbegrenzung erreicht. | nein |
| 431 | Request Header Fields Too Large | Die Header sind zu groß. | nein |
| 451 | Unavailable For Legal Reasons | Aufgrund einer rechtlichen Forderung gesperrt. | ja |
| 500 | Internal Server Error | Etwas ist schiefgegangen, und der Server hat nichts Genaueres zu sagen. | nein |
| 501 | Not Implemented | Der Server unterstützt die Methode überhaupt nicht. | ja |
| 502 | Bad Gateway | Ein vorgelagerter Server hat etwas Ungültiges geschickt. | nein |
| 503 | Service Unavailable | Vorübergehend nicht in der Lage, die Anfrage zu bearbeiten. | nein |
| 504 | Gateway Timeout | Ein vorgelagerter Server hat nicht rechtzeitig geantwortet. | nein |
| 505 | HTTP Version Not Supported | Die HTTP-Version der Anfrage wird nicht unterstützt. | nein |
| 506 | Variant Also Negotiates | Eine Fehlkonfiguration der Inhaltsaushandlung. | nein |
| 507 | Insufficient Storage | WebDAV: Nicht genug Platz, um die Darstellung zu speichern. | nein |
| 508 | Loop Detected | WebDAV: eine Endlosschleife beim Verarbeiten. | nein |
| 510 | Not Extended | Weitere Erweiterungen sind erforderlich. | nein |
| 511 | Network Authentication Required | Ein Captive Portal möchte, dass Sie sich anmelden. | nein |
Die, die verwechselt werden
- 401 heißt „Ich weiß nicht, wer Sie sind“ — schicken Sie Anmeldedaten und versuchen Sie es erneut. 403 heißt „Ich weiß, wer Sie sind, und die Antwort ist nein“. Waren die Anmeldedaten gültig, aber nicht ausreichend, ist es 403.
- 400 gilt einer Anfrage, die der Server nicht lesen kann. 422 gilt einer, die er einwandfrei gelesen hat und der er widerspricht. Ein 422 lässt sich mit anderen Daten wiederholen; ein 400 heißt meist, dass der Client selbst kaputt ist.
- Die erste Achse ist die Dauerhaftigkeit (301/308 dauerhaft, 302/307 vorübergehend), die zweite die Erhaltung der Methode (307/308 behalten sie, 301/302 historisch nicht). Im Zweifel bei einer API 307 oder 308 nehmen.
- Beide kommen von einem Proxy und nicht von Ihrer Anwendung. 502 heißt „der vorgelagerte Dienst hat Unsinn geantwortet oder ist gestorben“, 504 heißt „der vorgelagerte Dienst hat nie geantwortet“. Das Zweite ist eine Zeitgrenze, die Sie einstellen können; das Erste ein Ausfall, den Sie beheben müssen.
- Beide heißen, dass dort nichts ist. 410 heißt zusätzlich, dass es nie zurückkommt, und Suchmaschinen handeln danach innerhalb von Tagen statt von Monaten.
- 405 heißt „auf dieser URL nicht, aber hier ist, was geht“ — und muss einen `Allow`-Header senden. 501 heißt „dieser Server implementiert diese Methode nirgends“.
So funktioniert es
Suchen Sie, oder filtern Sie nach Klasse
Tippen Sie eine Zahl, einen Namen oder das Problem, das Sie haben – „gateway“, „rate limit“, „unauthorized“. Der Suchindex enthält kein Deutsch, „Authentifizierung“ findet also nichts, „authentication“ schon. Oder grenzen Sie auf 4xx ein und lesen Sie nach unten.
Öffnen Sie einen für die Details
Das Detail-Panel nennt die definierende Spezifikation, ob er heuristisch cachebar ist und jeden Header, den die Antwort tragen muss – ein 405 ohne `Allow` und ein 301 ohne `Location` sind beide unvollständig.
Lesen Sie die verwechselbaren Paare
Der Abschnitt unten behandelt die, die falsch gewählt werden: 401 gegen 403, 302 gegen 307, 502 gegen 504.
Häufige Fragen
Was ist der Unterschied zwischen 401 und 403?
401 bedeutet, die Anfrage hatte keine gültigen Zugangsdaten und muss einen `WWW-Authenticate`-Header enthalten, der sagt, wie sie zu liefern sind. 403 bedeutet, die Zugangsdaten wurden verstanden und reichen nicht. Einem angemeldeten Benutzer ohne Berechtigung 401 zu senden ist der häufige Fehler.
Warum cacht mein CDN einen 404?
Weil es das darf. RFC 9110 §15.1 listet die Statuscodes, die ein Cache heuristisch speichern kann, wenn nichts anderes etwas anderes sagt, und 404 steht darauf. Eine Seite, die Sie inzwischen veröffentlicht haben, bleibt „nicht gefunden“, bis der Cache abläuft oder Sie ihn leeren – senden Sie `Cache-Control: no-store` auf einem 404, von dem Sie erwarten, dass er ein 200 wird.
302 oder 307?
307, wenn die Methode erhalten bleiben soll. Historisch haben Clients bei einem 302 aus einem POST ein GET gemacht – die Spezifikation hat das nicht gesagt, aber alle haben es getan –, deshalb gibt es 307 und 308, um unmissverständlich „gleiche Methode, neue URL“ zu sagen.
Kann ich meinen eigenen Statuscode erfinden?
Senden können Sie alles, und Clients behandeln einen unbekannten Code als das generische Mitglied seiner Klasse – ein 499 wird wie ein 400 behandelt. Aber Caches, Proxys und Bibliotheken treffen Entscheidungen anhand der Klasse, sodass ein nicht registrierter Code Ihnen nichts bringt, was ein Header nicht besser transportieren könnte.
Eingabe aus
MIME-Typ nachschlagen
MIME Type Lookup
Schlägt einen MIME-Typ zur Dateiendung nach oder umgekehrt und erkennt den Typ aus den Dateibytes.
HTTP-Header prüfen
HTTP Header Inspector
Ruft eine URL ab und zeigt die vollständigen Antwort-Header, die Redirect-Kette, Zeiten und die verwendete Kompression.
JSON formatieren und validieren
JSON Formatter & Validator
Formatiert, minimiert und validiert JSON und zeigt bei Syntaxfehlern die genaue Zeile und Spalte.
YAML formatieren und validieren
YAML Formatter & Validator
Rückt YAML einheitlich ein, validiert es und markiert die Tab- und Anker-Fehler, an denen Parser scheitern.
Danach
Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.
HTTP-Anfragen erstellen und senden
HTTP Request Builder
Verfasst und sendet eine GET/POST/PUT/PATCH/DELETE/HEAD-Anfrage mit eigenen Headern und Body und zeigt Status, Header, Body und Zeiten – ohne je Cookies oder Authorization weiterzureichen.
HTTP-Header prüfen
HTTP Header Inspector
Ruft eine URL ab und zeigt die vollständigen Antwort-Header, die Redirect-Kette, Zeiten und die verwendete Kompression.
MIME-Typ nachschlagen
MIME Type Lookup
Schlägt einen MIME-Typ zur Dateiendung nach oder umgekehrt und erkennt den Typ aus den Dateibytes.
Base64 kodieren und dekodieren
Base64 Encoder & Decoder
Kodiert und dekodiert Base64 und Base64URL für Text oder Dateien und behandelt UTF-8 korrekt.
curl in Code
curl to Code
Wandelt einen curl-Befehl in fetch, axios, Python requests, Go, PHP oder PowerShell um.
Text-Hash
Text Hash
Berechnet MD5, SHA-1, SHA-256, SHA-384, SHA-512 und CRC-32 einer Zeichenkette, wahlweise in Großbuchstaben oder als Base64.