HTTP-Statuscodes
Eine HTTP-Antwort beginnt mit einem dreistelligen Code und einer kurzen Begründungsphrase. Die erste Ziffer ist die ganze Zusammenfassung: 1xx ist vorläufig, 2xx erfolgreich, 3xx weist woanders hin, 4xx beschuldigt die Anfrage, 5xx beschuldigt den Server. Wenn du nur das merkst, kannst du ein Log lesen, das du noch nie vorher gesehen hast.
Die Begründungssätze hier sind die aus den RFCs, auf Englisch, weil das ist, was auf dem Draht fährt – ein Server sendet "Not Found", nicht eine Übersetzung davon, und eine Phrase, die du in einem Log grep-t, muss den Bytes entsprechen, die tatsächlich gesendet wurden.
Die Unterscheidungen, die echte Probleme verursachen, sind innerhalb der Klassen statt zwischen ihnen: 401 versus 403, 301 versus 308, und 502 versus 503 beantworten jeweils eine andere Frage über das, was danach zu tun ist, und jedes wird routinemäßig für das andere verwendet.
1xx — Informativ
3Vorläufig: die Antwort ist nicht abschließend und eine andere folgt.
| Code | Grund-Phrase | Begründungsphrase |
|---|---|---|
| 100 | Continue | Header erhalten, weiter den Body senden. |
| 101 | Switching Protocols | Protokolle wechseln – der WebSocket-Handshake. |
| 103 | Early Hints | Frühe Hinweise: lade diese Ressourcen vor, während die echte Antwort vorbereitet wird. |
2xx — Erfolg
5Die Anfrage war empfangen, verstanden und akzeptiert.
| Code | Grund-Phrase | Begründungsphrase |
|---|---|---|
| 200 | OK | Erfolg, mit einem Body. |
| 201 | Created | Erstellt.Sollte einen Location-Header tragen, der auf die neue Ressource weist. |
| 202 | Accepted | Erfolg, und absichtlich kein Body. |
| 204 | No Content | Erfolg, und absichtlich kein Body.Die richtige Antwort auf eine DELETE, oder ein Speichern ohne etwas zum Zurückgeben. |
| 206 | Partial Content | Teilweiser Inhalt – die Antwort auf eine Range-Anfrage. Wiederaufbare Downloads. |
3xx — Umleitung
6Die Ressource ist woanders, oder deine gecachte Kopie ist immer noch gut.
| Code | Grund-Phrase | Begründungsphrase |
|---|---|---|
| 301 | Moved Permanently | Dauerhaft verschoben. Aktualisiere deine Links; Caches können dies dauerhaft behalten. |
| 302 | Found | Gefunden – eine vorübergehende Umleitung.Weit verbreitet als Wechsel der Methode zu GET, was 307 behebt. |
| 303 | See Other | Siehe anders: hole das Ergebnis mit GET. Die Umleitung nach einer Formular-POST. |
| 304 | Not Modified | Nicht geändert – deine gecachte Kopie ist aktuell. Gesendet ohne Body. |
| 307 | Temporary Redirect | Vorübergehende Umleitung, Methode und Body beibehalten. |
| 308 | Permanent Redirect | Permanente Umleitung, Methode und Body beibehalten. |
4xx — Client-Fehler
14Die Anfrage ist das Problem. Die Wiederholung unverändert wird wieder fehlschlagen.
| Code | Grund-Phrase | Begründungsphrase |
|---|---|---|
| 400 | Bad Request | Der Server konnte die Anfrage überhaupt nicht parsen. |
| 401 | Unauthorized | Nicht authentifiziert – der Server weiß nicht, wer du bist.Benannt Unauthorized, aber es bedeutet Unauthtenticated. Sollte WWW-Authenticate einschließen. |
| 403 | Forbidden | Authentifiziert und immer noch nicht erlaubt. Bessere Anmeldedaten werden nicht helfen. |
| 404 | Not Found | Keine solche Ressource, und der Server wird nicht sagen, ob es jemals eine gab. |
| 405 | Method Not Allowed | Falsche Methode für diese URL.Muss die Listen, die in einem Allow-Header funktionieren. |
| 406 | Not Acceptable | Nichts verfügbar in einem Format, das dein Accept-Header nehmen wird. |
| 409 | Conflict | Konflikte mit dem aktuellen Zustand – eine Bearbeitung gegen eine veraltete Version. |
| 410 | Gone | Weg: es existierte und wurde absichtlich entfernt. Stärker als 404. |
| 413 | Content Too Large | Der Body ist größer als der Server akzeptiert. |
| 415 | Unsupported Media Type | Der Server handhabe nicht diesen Content-Type. |
| 418 | I'm a teapot | Ich bin eine Teekanne. Ein 1998 April-Scherz, dauerhaft reserviert. |
| 422 | Unprocessable Content | Korrekt geparst, Inhalt ungültig – ein fehlendes Feld, ein schlechter Wert. |
| 429 | Too Many Requests | Suche nach Retry-After vor dem Erneuten Versuch und exponentiell abfallen.Suche nach Retry-After vor dem Erneuten Versuch und exponentiell abfallen. |
| 451 | Unavailable For Legal Reasons | Blockiert aus rechtlichen Gründen. Die Zahl ist eine Anspielung auf Fahrenheit 451. |
5xx — Server-Fehler
6Die Anfrage kann fein sein. Dies sind die, die es wert sind, erneut versucht zu werden.
| Code | Grund-Phrase | Begründungsphrase |
|---|---|---|
| 500 | Internal Server Error | Ein unbehandelter Fehler auf dem Server. Nichts, das du beheben könntest. |
| 501 | Not Implemented | Der Server implementiert diese Methode überhaupt nicht. |
| 502 | Bad Gateway | Ein Proxy erreichte den Upstream-Server und bekam etwas Unbrauchbares zurück. |
| 503 | Service Unavailable | Absichtlich nicht bedient – überlastet oder in Wartung.Der Status, der Retry-After tragen sollte. |
| 504 | Gateway Timeout | Ein Proxy gab auf, auf den Upstream-Server zu warten. |
| 505 | HTTP Version Not Supported | Die HTTP-Version in der Anfrage wird nicht unterstützt. |