HTTP-Statuscodes

Vollständige Referenz der HTTP-Antwort-Statuscodes mit Erklärungen und Anwendungsfällen.

HTTP-Statuscode-Kategorien

Was ist der Unterschied zwischen 301 und 302?

301 Moved Permanently teilt Clients mit, dass die Ressource dauerhaft verschoben wurde (Suchmaschinen übertragen die Rankings. 302 Found ist eine temporäre Weiterleitung) die ursprüngliche URL behält ihr Ranking.

Wann sollte ich 401 vs. 403 verwenden?

401 Unauthorized bedeutet „nicht authentifiziert" (der Client sollte Anmeldedaten bereitstellen. 403 Forbidden bedeutet „authentifiziert, aber nicht erlaubt") Anmeldedaten helfen nicht.

Was bedeutet ein 418-Statuscode?

418 „I'm a teapot" ist ein Aprilscherz aus RFC 2324 (Hyper Text Coffee Pot Control Protocol). Es wird in der Praxis nicht verwendet, ist aber in der Entwickler-Kultur weithin bekannt.

Ein Standard mit drei Jahrzehnten Wandel

HTTP-Statuscodes haben mehrere Spezifikationsgenerationen durchlebt. RFC 1945 (Mai 1996) standardisierte HTTP/1.0 mit den grundlegenden 1xx- bis 5xx-Kategorien. RFC 2616 (Juni 1999) lieferte HTTP/1.1 und war über ein Jahrzehnt lang die kanonische Referenz. Die 7230-7235-Reihe (Juni 2014) teilte HTTP/1.1 nach Themen in mehrere Spezifikationen auf. Der aktuelle konsolidierte Standard ist RFC 9110 „HTTP Semantics“ (Juni 2022), der die 7230-7235-Aufteilung ablöst und das richtige Zitat für moderne Arbeit ist. Das vollständige Live-Register der zugewiesenen Codes finden Sie im HTTP-Statuscode-Register der IANA.

Die fünf Kategorien auf einen Blick

Die „vs.“-Vergleiche, über die jeder stolpert

401 vs. 403. Das am häufigsten verwechselte Paar. 401 Unauthorized bedeutet „Sie haben sich nicht authentifiziert, versuchen Sie, sich anzumelden“ (der Name ist technisch irreführend, es geht um Authentifizierung, nicht um Autorisierung). 403 Forbidden bedeutet „Sie sind authentifiziert, dürfen diese Sache aber nicht tun“, Ihre Anmeldedaten sind gültig, gewähren aber keinen Zugriff auf diese Ressource. Ein häufiger Fehlgebrauch: 403 für nicht authentifizierte Anfragen zurückzugeben, wenn 401 mit einem WWW-Authenticate-Header korrekt ist.

301 vs. 302 vs. 307 vs. 308. Zwei Achsen, permanent vs. temporär, und das Verhalten zur Methodenerhaltung:

CodePermanent?Methode erhalten?SEO-Ranking-Signal
301 Moved PermanentlyJaHistorisch änderten Clients POST → GETPermanent, gibt Ranking an neue URL weiter
302 FoundNeinHistorisch änderten Clients POST → GETTemporär, ursprüngliche URL behält Ranking
307 Temporary RedirectNeinStrikt, POST bleibt POSTWie 302
308 Permanent RedirectJaStrikt, POST bleibt POSTWie 301

Wenn Sie GET-Anfragen zu SEO-Zwecken weiterleiten, ist 301 die übliche Wahl. Wenn Sie POST- oder PUT-Anfragen weiterleiten und die Methode erhalten möchten, brauchen Sie 307 oder 308.

400 vs. 422. 400 Bad Request ist für syntaktisch fehlerhafte Anfragen, ungültiges JSON, fehlende erforderliche Header, fehlerhafte Query-Parameter. 422 Unprocessable Entity (ursprünglich ein WebDAV-Code, von REST-APIs breit übernommen) ist für syntaktisch gültige Anfragen mit semantischen Problemen, das JSON parst korrekt, aber die Werte bestehen die fachliche Validierung nicht (negative Menge in einer Bestellung, E-Mail bereits in Verwendung). Viele APIs verwenden beide.

502 vs. 503 vs. 504. Drei verschiedene Upstream-Fehlermodi:

404 vs. 410. 404 Not Found bedeutet „wir wissen nicht, ob das existiert oder nicht“. 410 Gone bedeutet „das hat einmal existiert, es ist dauerhaft entfernt“. SEO-Auswirkung: Google behandelt 410 als stärkeres Signal, dass Inhalt dauerhaft nicht verfügbar ist, und entfernt ihn schneller aus dem Index als bei 404.

REST-API-Konventionen

Moderne REST-APIs haben sich auf eine ziemlich einheitliche Reihe von Konventionen geeinigt, welche Statuscodes für welche Aktionen stehen:

MethodeErfolgsfallHäufige Fehler
GET200 OK mit Body oder 304 Not Modified, falls zwischengespeichert404, falls Ressource fehlt, 403, falls verboten
POST (erstellen)201 Created mit Location-Header, der auf die neue Ressource zeigt400 bei fehlerhaftem Body, 422 bei Validierungsfehlern, 409 bei Konflikten
PUT (ersetzen) / PATCH (aktualisieren)200 OK mit aktualisiertem Body oder 204 No Content404, falls Ressource fehlt, 409 bei Versionskonflikten
DELETE204 No Content (oder 200 mit Löschbestätigung)404, falls fehlend
Beliebig (ratenbegrenzt)-429 Too Many Requests mit Retry-After-Header
Beliebig (Authentifizierung)-401, falls keine Authentifizierung, 403, falls authentifiziert, aber nicht berechtigt

SEO-Auswirkungen

Berühmte & kulturelle Codes

Häufige Fehler

  1. 200 OK für Fehler mit einem Fehler-Body verwenden. {"error": "not found"} mit einem 200-Status zurückzugeben, verwirrt jede Caching-Schicht, jedes Monitoring-Werkzeug und jedes Client-SDK. Verwenden Sie den richtigen Statuscode.
  2. 403 für nicht authentifizierte Anfragen zurückgeben. Der richtige Code ist 401 mit einem WWW-Authenticate-Header.
  3. 302 verwenden, wenn Sie 301 meinen. Wenn der Umzug dauerhaft ist, brauchen Suchmaschinen das 301, um das Ranking zu übertragen. 302 behält die alte URL im Index.
  4. 301 oder 302 für POST/PUT-Weiterleitungen verwenden. Historisch erlaubten diese es Clients, die Methode auf GET zu ändern. 307 und 308 erhalten die ursprüngliche Methode strikt.
  5. 500 zurückgeben, wenn 503 gemeint ist. Wenn der Server überlastet oder in Wartung ist, ist 503 mit Retry-After das korrekte Signal, sowohl für Clients als auch für den Googlebot.
  6. 404 für dauerhaft entfernte Seiten verwenden. 410 Gone ist das stärkere Signal und wird schneller aus Suchmaschinen-Indizes entfernt.
  7. Den Location-Header bei 201- und 3xx-Antworten vergessen. Der Location-Header ist das, was dem Client sagt, wo die neue Ressource liegt oder wohin weitergeleitet werden soll. Ohne ihn können Clients nicht navigieren.

Weitere häufig gestellte Fragen

Wann sollte ich 422 statt 400 zurückgeben?

400 Bad Request bedeutet, dass die Anfrage selbst fehlerhaft ist, ungültiges JSON, fehlende erforderliche Header, fehlerhafte Query-Parameter. 422 Unprocessable Entity bedeutet, dass die Anfrage wohlgeformt ist, aber semantische Fehler enthält, die die Verarbeitung verhindern, ein Mengenfeld mit einer negativen Zahl, eine bereits verwendete E-Mail-Adresse, ein Datum in der Vergangenheit für ein Feld, das nur Zukunft erlaubt. Moderne REST-API-Konventionen haben sich auf diese Aufteilung geeinigt, wobei die meisten großen APIs (GitHub, Stripe, Twilio) 422 für Validierungsfehler verwenden.

Warum gibt Cloudflare manchmal 520, 521, 522… zurück?

Die 520-527-Codes sind Cloudflare-spezifisch und signalisieren verschiedene Arten, wie deren Edge Ihren Origin-Server nicht erreichen konnte. 520 ist das generische „Webserver gab einen unbekannten Fehler zurück“; 521 bedeutet, Ihr Origin hat die Verbindung verweigert; 522 ist ein Verbindungs-Timeout zu Ihrem Origin; 524 bedeutet, Ihr Origin brauchte zu lange für eine Antwort. Sie sind nicht im IANA-Register, werden aber häufig angetroffen, wenn Websites hinter Cloudflare Backend-Probleme haben.

Zeigt mir mein Browser, welchen Code meine API zurückgegeben hat?

Ja, öffnen Sie die DevTools → Tab „Network“, klicken Sie auf die Anfrage und schauen Sie in die Spalte „Status“. Browser zeigen für manche Codes auch generische Seiten an (das Dinosaurierspiel bei Verbindungsfehlern in Chrome, die Standard-Seiten für 404 / 500); aber der tatsächliche numerische Code steht immer in der Antwort.

Was ist 103 Early Hints?

Ein relativ neuer (RFC 8297, 2017) 1xx-Code, der dem Server erlaubt, Link: rel=preload-Header zu senden, bevor die vollständige Antwort bereit ist, und dem Browser sagt, kritische Ressourcen (CSS, Schriften, Bilder) früh zu laden. Inzwischen von Chrome unterstützt und von Cloudflare, Fastly und anderen CDNs als Performance-Optimierung ausgeliefert.

Kann ich mir einen eigenen Statuscode ausdenken?

Technisch ja (HTTP erlaubt jeden 3-stelligen Code im Bereich 100-599. Praktisch nein), Clients, Proxys und Caches behandeln unbekannte Codes anhand ihrer ersten Ziffer (also 4xx = generisch Client-Fehler, 5xx = Server-Fehler). Manche Anbieter tun das (Cloudflares 520er, Nginx' 444), aber solange Sie nicht beide Enden der Leitung kontrollieren, halten Sie sich an das IANA-Register. Ein 299 zu erfinden, bricht zwar nichts, vermittelt aber auch nichts.

Warum heißt der „Statuscode“ ein „Status“ und nicht ein „Fehlercode“?

Weil die meisten von ihnen keine Fehler sind. 200 OK ist der am häufigsten zurückgegebene Statuscode der Welt, er bedeutet „alles ist gut gegangen“. Die Codes vermitteln den Status der Anfrage: Erfolg, Weiterleitung, Client-Fehler, Server-Fehler. Sie „Fehlercodes“ zu nennen, betont einseitig die negativen Fälle, die protokolliert und bemerkt werden; die Erfolgscodes erledigen ihre Arbeit stillschweigend jede Mikrosekunde.

Verwandte Tools

URL-Parser & Decoder .htaccess-Generator Kostenloser URL-Encoder / -Decoder