414 URI Too Long
Verwendung
Wird die Fehlermeldung 414 URI Too Long empfangen, weiß der Client, dass der Server einen kürzeren HTTP-Pfad bzw. eine kürzere Adresse erwartet. Zwar legt die Spezifikation keinerlei Anforderung an die Länge fest, in der Praxis begrenzen Browser die Größe jedoch, um bestimmte Arten von Angriffen zu verhindern.
Server, Reverse-Proxys und Frameworks setzen jeweils ihre eigenen Grenzen für die URI-Länge. Übliche Standardwerte reichen von 4 KB bis 8 KB, auch wenn keine Spezifikation ein Maximum definiert.
Die Antwort 414 URI Too Long ist standardmäßig zwischenspeicherbar.
SEO-Auswirkung
Suchmaschinen wie Google indexieren keine URL mit dem Antwortstatus 414. Zuvor indexierte URLs werden aus den Suchergebnissen entfernt.
Beispiel
Der Client fordert eine Ressource mit einem URI an, der über das hinausgeht, was der Server zulässt.
Anfrage
GET /<...a_long_URI...> HTTP/1.1
Host: example.com
Antwort
HTTP/1.1 414 URI Too Long
Behebung
Die häufigste Ursache ist eine GET-Anfrage mit zu vielen Query-Parametern oder übermäßig langen, in der URL kodierten Werten. Auch eine Weiterleitungsschleife oder eine falsch konfigurierte Rewrite-Regel, die bei jedem Durchlauf Parameter anhängt, löst diesen Fehler aus.
Clientseitige Korrekturen:
nginx: Erhöhen Sie large_client_header_buffers, um längere Anfragezeilen zuzulassen. Die Direktive nimmt zwei Werte entgegen: Anzahl der Puffer und Puffergröße, z. B. large_client_header_buffers 4 32k. Starten Sie nginx neu, damit die Änderung wirksam wird.
Apache: Setzen Sie LimitRequestLine in der httpd.conf auf einen höheren Byte-Wert. Der Standardwert beträgt 8190 Bytes. Werte bis 128000 sind bei Anwendungen mit langen URLs üblich. Starten Sie Apache nach der Änderung neu.
IIS: Bearbeiten Sie maxUrl und maxQueryString in der Datei web.config unter system.webServer > security > requestFiltering > requestLimits. Die Standardwerte betragen 4096 Bytes für die URL-Länge und 2048 Bytes für Query-Strings. Halten Sie diese Werte so niedrig wie praktikabel. Große URL-Grenzwerte erhöhen die Angriffsfläche für Injection-Angriffe.
Tritt der Fehler in einem Browser statt in einer API auf, behebt das Leeren von Browser-Cache und Cookies das Problem mitunter, insbesondere wenn veraltete Cookies die Größe der Anfrage-Header über die Serverlimits hinaus aufblähen.
Code-Referenzen
.NET
HttpStatusCode.RequestUriTooLong
Rust
http::StatusCode::URI_TOO_LONG
Rails
:uri_too_long
:request_uri_too_long
Go
http.StatusRequestURITooLong
Symfony
Response::HTTP_REQUEST_URI_TOO_LONG
Python3.5+
http.HTTPStatus.REQUEST_URI_TOO_LONG
Java
java.net.HttpURLConnection.HTTP_REQ_TOO_LONG
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_REQUEST_URI_TOO_LONG
Angular
@angular/common/http/HttpStatusCode.UriTooLong