431 Request Header Fields Too Large
Verwendung
Der Statuscode 431 Request Header Fields Too Large zeigt an, dass der Server die Verarbeitung der HTTP-Anfrage verweigert, weil die HTTP-Header zu viele Daten enthalten.
Je nach Server bezieht sich dies auf die Gesamtlänge aller HTTP-Header zusammen oder auf einzelne bestimmte Header. In beiden Fällen hat der Client die Möglichkeit, einen oder mehrere HTTP-Header zu entfernen und die Anfrage erneut zu senden. Eine mögliche Lösung zur Begrenzung der HTTP-Header besteht darin, die übertragenen Cookies zu kürzen oder zu reduzieren.
SEO-Auswirkung
Suchmaschinen wie Google indexieren keine URL mit dem Antwortstatus 431. Zuvor indexierte URLs, die diesen Statuscode liefern, werden aus den Suchergebnissen entfernt.
Beispiel
Der Client fordert eine Ressource an, und der Server antwortet mit 431 Request Header Fields Too Large, weil die Kombination zweier großer Cookie-Werte die vom Server für HTTP-Header festgelegte Obergrenze überschreitet.
Anfrage
GET /tech-news HTTP/1.1
Host: example.com
Cookie: first_cookie=<very_long>; second_cookie=<long_again>
Antwort
HTTP/1.1 431 Request Header Fields Too Large
Content-Type: text/html
Content-Length: 183
<html>
<head>
<title>Request Headers Too Long</title>
</head>
<body>
<p>The request headers are too long.
Try retrying without cookies.</p>
</body>
</html>
Behebung
Löschen Sie im Browser die Cookies für die betroffene Domain. Die Anhäufung von Cookies ist die häufigste Ursache. Skripte von Drittanbietern, Analyse-Tags und Marketing-Pixel setzen bei jedem Besuch Cookies, deren Gesamtgröße irgendwann die Serverbeschränkung überschreitet. Löschen Sie zuerst die site-spezifischen Cookies, bevor Sie sämtliche Browser-Cookies entfernen.
Reduzieren Sie die Werte benutzerdefinierter Header, die mit Anfragen gesendet werden. Lange Autorisierungs-Token, überdimensionierte X-Custom-*-Header und URL-kodierte Query-Parameter, die in Headern eingebettet sind, tragen allesamt zur Gesamtgröße bei.
Erhöhen Sie auf der Serverseite die Grenzwerte für den Header-Puffer:
Prüfen Sie die Cookie-Nutzung site-weit. Begrenzen Sie die Anzahl der pro Domain gesetzten Cookies und verwenden Sie die Attribute SameSite, Path und Domain, um zu verhindern, dass Cookies sich auf Subdomains und Pfade ausbreiten, auf denen sie nicht benötigt werden. Verlagern Sie Sitzungsdaten in serverseitigen Speicher oder in localStorage, wenn die Daten nicht mit jeder Anfrage mitgesendet werden müssen.
Serverbeschränkungen über 32 KB hinaus anzuheben, birgt ein Denial-of-Service-Risiko. Erhöhen Sie die Grenzwerte nur so weit, wie es für legitimen Verkehr nötig ist, und kombinieren Sie die Änderung mit einer Überwachung der Anfragegrößen.
Chrome und 431-Fehler
Chrome zeigt “Bad Request - Request Header Field Too Long” oder “Bad message 431” an, wenn angesammelte Cookies einer Domain die Anfrage-Header über die Serverbeschränkung hinaus anwachsen lassen. Das Löschen der Cookies für die betreffende Site in den Chrome-Einstellungen (Einstellungen > Datenschutz > Cookies > Alle Websitedaten anzeigen) behebt den Fehler sofort, ohne andere Sites zu beeinträchtigen.
Code-Referenzen
.NET
HttpStatusCode.RequestHeaderFieldsTooLarge
Rust
http::StatusCode::REQUEST_HEADER_FIELDS_TOO_LARGE
Rails
:request_header_fields_too_large
Go
http.StatusRequestHeaderFieldsTooLarge
Symfony
Response::HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE
Python3.5+
http.HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_REQUEST_HEADER_FIELDS_TOO_LARGE
Angular
@angular/common/http/HttpStatusCode.RequestHeaderFieldsTooLarge