Start·HTTP-Codes und -Header

132 HTTP-Statuscodes und -Header

Was 404 und 500 wirklich bedeuten und was Content-Type oder Cache-Control tun — je eine Zeile.

Statuscodes

1xx Information4

Ein Zwischenstand; die eigentliche Antwort folgt.

2xx Erfolg10

Die Anfrage ging durch.

3xx Umleitung7

Woanders hingehen — dauerhaft oder vorübergehend ist der Unterschied.

4xx Client-Fehler29

Das Problem liegt bei der Anfrage; unverändert erneut gesendet scheitert sie wieder.

400 Bad RequestDie Anfrage ist fehlerhaft und nicht lesbar.401 UnauthorizedSie haben sich nicht ausgewiesen; Anmelden hilft meist.402 Payment RequiredZahlung erforderlich — im Standard vorgesehen, in der Praxis selten.403 ForbiddenDer Server kennt Sie und verweigert trotzdem; Anmelden ändert daran oft nichts.404 Not FoundUnter dieser Adresse liegt nichts — die URL ist falsch oder die Seite ist weg.405 Method Not AllowedDie Adresse existiert, akzeptiert aber diese Methode nicht.406 Not AcceptableDer Server kann das gewünschte Format nicht liefern.407 Proxy Authentication RequiredEin zwischengeschalteter Proxy verlangt zuerst eine Anmeldung.408 Request TimeoutDer Server hat gewartet, die Anfrage kam nie vollständig an.409 ConflictDie Anfrage kollidiert mit dem aktuellen Zustand — typisch bei gleichzeitigen Änderungen.410 GoneAbsichtlich entfernt und kehrt nicht zurück — ein klareres Lebewohl als 404.411 Length RequiredDie Anfrage muss ihre Body-Länge nennen, tat es aber nicht.412 Precondition FailedEine mitgeschickte Bedingung traf nicht zu.413 Content Too LargeDer gesendete Body überschreitet das Serverlimit.414 URI Too LongDie URL ist zu lang — meist durch zu viele Query-Parameter.415 Unsupported Media TypeDer Server kann den gesendeten Medientyp nicht verarbeiten.416 Range Not SatisfiableDer angeforderte Bereich liegt außerhalb der Datei.417 Expectation FailedDie im Expect-Header genannte Erwartung ist nicht erfüllbar.418 I'm a teapotEin Scherzcode: Die Teekanne weigert sich, Kaffee zu kochen.421 Misdirected RequestDieser Server ist für die Anfrage nicht zuständig.422 Unprocessable ContentDie Syntax stimmt, doch der Inhalt verletzt die Regeln.423 LockedDie Ressource ist gesperrt.424 Failed DependencyEine frühere Anfrage schlug fehl, daher scheitert auch diese.425 Too EarlyDer Server verarbeitet die möglicherweise wiederholte Anfrage noch nicht.426 Upgrade RequiredZum Fortfahren muss auf ein anderes Protokoll gewechselt werden.428 Precondition RequiredDie Anfrage muss eine Bedingung mitbringen — so werden verlorene Änderungen verhindert.429 Too Many RequestsZu viele Anfragen; Retry-After nennt den nächsten Versuch.431 Request Header Fields Too LargeDie Header sind zu groß — oft durch angesammelte Cookies.451 Unavailable For Legal ReasonsAus rechtlichen Gründen gesperrt; die Zahl spielt auf den Roman Fahrenheit 451 an.

5xx Server-Fehler11

Das Problem liegt beim Server; ein späterer Versuch lohnt oft.

Header

Request-Header28

Header, die der Browser beim Senden anfügt.

AcceptNennt die Formate, die der Client annehmen kann.Accept-EncodingNennt die verstandenen Kompressionen; gzip oder br sparen viel Übertragung.Accept-LanguageNennt die bevorzugten Sprachen; mehrsprachige Seiten wählen danach.AuthorizationTrägt die Zugangsdaten — ein Token oder Benutzername und Passwort.CookieSendet die zuvor gesetzten Cookies zurück.HostNennt die angesprochene Domain — deshalb kann ein Server viele Sites bedienen.If-Modified-SinceFordert die Ressource nur an, wenn sie sich seither geändert hat.If-None-MatchFordert die Ressource nur bei abweichendem ETag — so prüft ein Cache nach.OriginNennt die Herkunft der Anfrage; der Browser setzt ihn, CORS entscheidet danach.RangeFordert nur einen Teil der Datei — Grundlage für Fortsetzen und Videosprünge.RefererNennt die Herkunftsseite; der Tippfehler wurde Teil des Standards.User-AgentBeschreibt Browser und Gerät; heute sind diese Angaben meist Tarnung.Sec-Fetch-DestSagt, wofür die Anfrage ist — Bild, Skript, Dokument.Sec-Fetch-ModeGibt an, ob die Anfrage gleiche Herkunft, CORS oder Navigation ist.Sec-Fetch-SiteSagt, ob die Anfrage von derselben oder einer anderen Site kam.DNTBittet, nicht verfolgt zu werden; unverbindlich und meist ignoriert.ExpectFragt beim Server nach, bevor ein großer Body gesendet wird.ForwardedHält die ursprünglichen Client-Angaben nach Proxys fest.FromEnthält eine E-Mail-Adresse des Anfragenden; Crawler nutzen sie als Kontakt.If-MatchNur fortfahren, wenn der ETag übereinstimmt — verhindert Überschreiben.If-RangeFortsetzen, wenn die Datei unverändert ist; sonst neu beginnen.Max-ForwardsBegrenzt, über wie viele Proxys eine Anfrage laufen darf.Proxy-AuthorizationZugangsdaten für den Proxy statt für den Ursprungsserver.TENennt die akzeptierten Transfer-Codierungen.Upgrade-Insecure-RequestsBittet den Server, http-Links auf https zu heben.X-Forwarded-ForTrägt die ursprüngliche Client-IP durch Proxys; kein Standard, aber verbreitet.X-Forwarded-ProtoGibt an, ob die ursprüngliche Anfrage über http oder https kam.X-Requested-WithEine alte Konvention, die JavaScript-Anfragen kennzeichnete.

Response-Header30

Header, die der Server bei der Antwort anfügt.

Access-Control-Allow-OriginNennt die Ursprünge, die diese Antwort lesen dürfen — der Kern von CORS.Access-Control-Allow-MethodsListet die für ursprungsübergreifende Anfragen erlaubten Methoden.Access-Control-Allow-HeadersListet die bei ursprungsübergreifenden Anfragen erlaubten Header.Access-Control-Allow-CredentialsLegt fest, ob ursprungsübergreifende Anfragen Cookies mitführen dürfen.Access-Control-Max-AgeGibt an, wie lange das Preflight-Ergebnis gilt.AgeWie lange die Antwort schon im Cache liegt.AllowNennt die akzeptierten Methoden; begleitet einen 405.Content-DispositionBestimmt Anzeigen oder Herunterladen und trägt den Dateinamen.Content-Security-PolicySteuert, woher Skripte und Bilder stammen dürfen — der Zaun gegen XSS.ETagEin Fingerabdruck dieser Fassung; ändert sich der Inhalt, ändert sich das Tag.ExpiresNennt den Zeitpunkt, ab dem die Antwort als veraltet gilt.Last-ModifiedWann sich die Ressource zuletzt geändert hat; Basis bedingter Anfragen.LocationDie nächste Adresse; begleitet Weiterleitungen und 201.Permissions-PolicyRegelt, welche Dokumente Kamera, Mikrofon oder Standort nutzen dürfen.Referrer-PolicyBestimmt, wie viel Referrer-Information mitgeht.Retry-AfterNennt den nächsten Versuch; begleitet 429 oder 503.ServerNennt die Serversoftware; zu viele Details helfen Angreifern.Set-CookieSetzt ein Cookie im Browser; mit HttpOnly und Secure ist es sicherer.Strict-Transport-SecurityWeist den Browser an, diese Site künftig nur über https zu laden.Timing-Allow-OriginErlaubt einer anderen Herkunft, Timing-Messwerte zu lesen.VaryNennt die Header, die die Antwort verändern; Caches schlüsseln danach.WWW-AuthenticateNennt das Authentifizierungsverfahren; begleitet einen 401.X-Content-Type-OptionsVerhindert, dass der Browser einen anderen Inhaltstyp errät.X-Frame-OptionsVerhindert, dass andere Seiten diese Seite einbetten.X-XSS-ProtectionAktivierte einen alten XSS-Filter; heute übernimmt das CSP.Cross-Origin-Opener-PolicyIsoliert den Kontext, damit andere Ursprünge kein Fenster-Handle halten.Cross-Origin-Resource-PolicyLegt fest, welche Ursprünge diese Ressource überhaupt laden dürfen.Cross-Origin-Embedder-PolicyVerlangt, dass eingebettete fremde Ressourcen ausdrücklich zustimmen.Content-RangeNennt den gesendeten Ausschnitt des Ganzen; begleitet einen 206.Accept-RangesGibt an, ob Bereichsanfragen möglich sind; bytes heißt: Fortsetzen geht.

In beide Richtungen13

Header, die auf beiden Seiten auftreten können.

So liest man das

  • Die erste Ziffer des Statuscodes trägt die Bedeutung: 4 heißt Anfrage, 5 heißt Server.
  • 404 heißt „nicht da", 403 heißt „da, aber nicht für Sie". Wer sie vertauscht, sucht länger.
  • Header-Namen unterscheiden keine Groß- und Kleinschreibung — Content-Type und content-type sind dasselbe.
  • Cache- und CORS-Probleme hängen meist an einer Header-Zeile, sichtbar im Netzwerk-Tab.

Häufige Fragen

Q. Was unterscheidet 404 von 403?

404 sagt: An dieser Adresse liegt nichts. 403 sagt: Es liegt etwas da, aber nicht für Sie. Manche Server antworten absichtlich mit 404, um die Existenz überhaupt zu verbergen.

Q. Kann ich bei einem 500 etwas tun?

Codes mit 5 sind Sache des Servers, meist hilft nur Warten. Ein 502 oder 504 steckt jedoch zwischen zwei Servern und löst sich oft beim erneuten Versuch kurz darauf.

Q. Wann 301, wann 302?

301, wenn die Adresse endgültig umgezogen ist, 302 bei einem vorübergehenden Umweg. Browser und Suchmaschinen merken sich ein 301 lange — das lässt sich schwer zurücknehmen.

Q. Sind Header-Namen case-sensitiv?

Nein. Content-Type und content-type sind derselbe Header, und seit HTTP/2 werden sie ohnehin klein geschrieben übertragen.

Q. Warum entstehen CORS-Fehler?

Will eine Seite eine Antwort fremder Herkunft lesen, blockt der Browser, sofern der Server es nicht mit Access-Control-Allow-Origin erlaubt. Der Server hat geantwortet — der Browser reicht den Body nur nicht an Ihren Code weiter. Deshalb zeigt der Netzwerk-Tab eine Antwort, die das Skript nicht lesen kann.