HTTP-Statuscodes-Referenz

Eine durchsuchbare Referenz aller offiziellen HTTP-Statuscodes — was jeder bedeutet und wann ein Server ihn senden sollte, gemäß RFC 9110 und verwandten RFCs.

195 Aufrufe

Warum Statuscodes nach der ersten Ziffer gruppiert werden

Jeder HTTP-Statuscode ist eine dreistellige Zahl, und allein die erste Ziffer verrät einem Client die allgemeine Kategorie der Antwort, bevor er überhaupt den Rest liest — eine Designentscheidung, die von den frühesten Spezifikationen von HTTP an bestand und fortgeführt wurde, heute formalisiert in RFC 9110, dem Dokument, das die ältere RFC-7230-7235-Serie konsolidierte und ablöste, um die Semantik von HTTP unabhängig von jeder einzelnen Protokollversion zu definieren (HTTP/1.1, HTTP/2, HTTP/3 teilen sich alle dieselben Statuscode-Bedeutungen). 1xx (Informational) bedeutet, dass die Anfrage empfangen und verstanden wurde und die Verarbeitung fortgesetzt wird — dies sind vorläufige Antworten, die ein Client nicht als endgültig behandeln sollte. 2xx (Success) bedeutet, dass die Anfrage empfangen, verstanden und akzeptiert wurde. 3xx (Redirection) bedeutet, dass weitere Maßnahmen erforderlich sind, um die Anfrage abzuschließen, typischerweise das Abrufen einer anderen URL. 4xx (Client Error) bedeutet, dass die Anfrage, so wie sie gesendet wurde, ein vom Client verursachtes Problem enthält — fehlerhafte Syntax, fehlende Authentifizierung, eine nicht existierende Ressource. 5xx (Server Error) bedeutet, dass die Anfrage anscheinend gültig war, der Server sie aber nicht erfüllen konnte. Dieses Erste-Ziffer-System bedeutet, dass ein Client, der nur die Ziffer „4" erkennt und sonst nichts über einen bestimmten Code weiß, trotzdem korrekt weiß, dass etwas an seiner eigenen Anfrage behoben werden muss, statt sie identisch erneut zu versuchen — genau dieses Fallback-Verhalten ist der Grund, warum der Standard es vorschreibt.

Die zweite und dritte Ziffer unterteilen jede Klasse in spezifische, dokumentierte Bedeutungen, und von einem Client wird erwartet, dass er für jeden Code, den er nicht speziell erkennt, auf das allgemeine Klassenverhalten zurückfällt — deshalb sind obskure oder neuere Codes wie 226 oder 508 auch ohne explizite Unterstützung für ältere Software immer noch sicher annähernd korrekt zu behandeln. Codes werden auch nicht frei erfunden: Das vollständige Register wird von der IANA (Internet Assigned Numbers Authority) gepflegt, gerade damit „599" oder „250" nicht auf zwei verschiedenen Servern zwei unterschiedliche Dinge bedeuten können — jeder aktiv verwendete Code lässt sich auf ein bestimmtes RFC zurückführen, das seine genaue Semantik definiert; mehrere davon erweitern die ursprüngliche HTTP/1.1-Spezifikation für bestimmte Protokolle, am sichtbarsten WebDAV (RFC 4918), von dem die Codes 207, 208, 422, 423, 424 und 507/508 auf dieser Seite stammen.

Zwei Codes, die man genau kennen sollte: 404 vs. 410

Zwei der am häufigsten verwechselten Codes sind 404 Not Found und 410 Gone, und der Unterschied ist nicht kosmetisch — er verändert, wie sich eine Suchmaschine und ein Browser verhalten. 404 ist bewusst mehrdeutig: Der Server hat keine Information darüber, ob die Ressource an dieser URL jemals existierte, ob sie zurückkommen könnte, oder ob die URL einfach falsch eingegeben wurde. 410 ist eine bewusste, stärkere Aussage: Die Ressource existierte an genau dieser URL und wurde absichtlich, dauerhaft entfernt, ohne Weiterleitungsadresse — RFC 9110 empfiehlt 410 ausdrücklich speziell für diesen Fall „der Zustand ist wahrscheinlich dauerhaft", in dem ein 404 die Gewissheit untertreiben würde. Suchmaschinen behandeln dies in der Praxis unterschiedlich: Eine URL, die wiederholt 404 zurückgibt, wird typischerweise erst aus dem Index entfernt, nachdem sie über einen längeren Zeitraum mehrfach erneut gecrawlt wurde, nur für den Fall, dass sie zurückkehrt, während ein 410 eine absichtliche Entfernung signalisiert und Suchmaschinen im Allgemeinen schneller darauf reagieren und die Seite früher aus dem Index nehmen, weil der Server ausdrücklich zugesichert hat, dass sie nicht zurückkehren wird. Beim dauerhaften Entfernen einer Seite 410 korrekt zu verwenden — statt standardmäßig für alles 404 zu nehmen — ist ein kleiner, aber echter technischer SEO-Hebel.

  • 301 vs. 302 vs. 307 vs. 308: 301 und 308 bedeuten beide „dauerhaft verschoben", während 302 und 307 beide „vorübergehend verschoben" bedeuten — das neuere Paar 307/308 wurde speziell eingeführt, um zu garantieren, dass Anfragemethode und -body bei der Weiterleitung erhalten bleiben (ein POST bleibt ein POST), da weit verbreitetes historisches Browserverhalten 301/302-Weiterleitungen still in ein GET umwandelte, was die erneute Formularübermittlung auf eine Weise brach, die die neueren Codes beheben.
  • 401 vs. 403: 401 Unauthorized bedeutet trotz des verwirrenden Namens technisch „Sie sind nicht authentifiziert — melden Sie sich an"; 403 Forbidden bedeutet „Sie sind identifiziert, aber Sie dürfen darauf nicht zugreifen" — eine Unterscheidung, die viele APIs in der Praxis verwischen, die Spezifikation aber klar getrennt hält.
  • 429 Too Many Requests (RFC 6585) ist die Standardantwort für Ratenbegrenzung und wird häufig mit einem Retry-After-Header kombiniert, der dem Client genau mitteilt, wie lange er warten soll, bevor er es erneut versucht.
  • 1xx-Codes sieht man selten direkt, weil die meisten HTTP-Client-Bibliotheken sie transparent behandeln, bevor Ihr Anwendungscode jemals eine Antwort sieht — 100 Continue etwa lässt einen Client prüfen, ob es sich überhaupt lohnt, einen großen Anfrage-Body zu senden, bevor er ihn sendet.

Häufig gestellte Fragen

Was ist der tatsächliche Unterschied zwischen 404 und 410?

Beide bedeuten, dass die Ressource nicht gefunden werden kann, aber 404 lässt offen, ob sie jemals existierte oder zurückkehren könnte, während 410 eine bewusste Aussage ist, dass die Ressource an dieser URL existierte und dauerhaft, absichtlich entfernt wurde. Suchmaschinen entfernen eine 410-Seite in der Regel schneller aus dem Index als eine 404-Seite, weil der Server ausdrücklich bestätigt hat, dass die Entfernung dauerhaft ist.

Ist 418 „I'm a Teapot" ein echter, nutzbarer Statuscode?

Er stammt aus RFC 2324, dem „Hyper Text Coffee Pot Control Protocol" von 1998, einem Aprilscherz-RFC. Er war nie ernst gemeint, erwies sich aber als nützlicher, unverwechselbarer, eindeutiger Testcode, und RFC 9110 bewahrt ihn heute formal mit einem ausdrücklichen Hinweis, dass sein Status optional ist und er nicht von echten Servern implementiert werden muss.

Warum brechen 301- und 302-Weiterleitungen manchmal Formularübermittlungen?

Historisch wandelten viele Browser eine weitergeleitete POST-Anfrage beim Folgen eines 301 oder 302 still in eine GET-Anfrage um und verwarfen dabei den übermittelten Body. Die neueren Codes 307 (Temporary Redirect) und 308 (Permanent Redirect) wurden speziell eingeführt, um zu garantieren, dass die ursprüngliche HTTP-Methode und der Anfrage-Body bei der Weiterleitung erhalten bleiben.

Was ist der Unterschied zwischen 401 und 403?

401 Unauthorized bedeutet tatsächlich, dass der Client sich überhaupt nicht authentifiziert hat - trotz des Namens fordert er Anmeldedaten an. 403 Forbidden bedeutet, dass der Client identifiziert ist, aber ausdrücklich nicht berechtigt ist, auf diese bestimmte Ressource zuzugreifen. Viele reale APIs verwenden sie locker oder austauschbar, aber die Spezifikation hält die Bedeutungen getrennt.

Woher stammen WebDAV-spezifische Codes wie 507 oder 423?

Sie sind in RFC 4918 definiert, der WebDAV-Spezifikation (Web Distributed Authoring and Versioning), die einfaches HTTP um Operationen für die Remote-Dateiverwaltung erweitert, etwa das Sperren einer Ressource (423 Locked) oder das Melden, dass dem Server der Speicherplatz ausgegangen ist (507 Insufficient Storage). Sie bleiben Teil des offiziellen IANA-HTTP-Statuscode-Registers neben den Kern-HTTP-Codes.

Kommentare

Noch keine Kommentare — schreiben Sie den ersten!

Ähnliche Tools