Was ist die maximale Länge einer HTTP- GET- Anforderung?
Ist ein Antwortfehler definiert, den der Server zurückgeben kann / sollte, wenn er eine GET-Anforderung empfängt, die diese Länge überschreitet?
Dies steht im Zusammenhang mit einer Webdienst-API, obwohl es interessant ist, auch die Browserbeschränkungen zu sehen.
web-services
http
Mark Harrison
quelle
quelle
Antworten:
Das Limit hängt sowohl vom verwendeten Server als auch vom verwendeten Client ab (und gegebenenfalls auch vom Proxy, den der Server oder der Client verwendet).
Die meisten Webserver haben ein Limit von 8192 Bytes (8 KB), das normalerweise irgendwo in der Serverkonfiguration konfiguriert werden kann. In Bezug auf die clientseitige Angelegenheit warnt die HTTP 1.1-Spezifikation sogar davor. Hier ist ein Auszug aus Kapitel 3.2.1 :
Das Limit in Internet Explorer und Safari beträgt ca. 2 KB, in Opera ca. 4 KB und in Firefox ca. 8 KB. Wir können daher davon ausgehen, dass 8 KB die maximal mögliche Länge und 2 KB eine günstigere Länge sind, auf die Sie sich auf der Serverseite verlassen können, und dass 255 Byte die sicherste Länge sind, um davon auszugehen, dass die gesamte URL eingeht.
Wenn das Limit entweder im Browser oder auf dem Server überschritten wird, kürzen die meisten nur die Zeichen außerhalb des Limits ohne Vorwarnung. Einige Server senden jedoch möglicherweise einen HTTP 414-Fehler . Wenn Sie große Datenmengen senden müssen, verwenden Sie besser POST anstelle von GET. Das Limit ist viel höher, hängt jedoch stärker vom verwendeten Server ab als vom Client. Normalerweise erlaubt ein durchschnittlicher Webserver bis zu 2 GB. Dies kann auch irgendwo in den Servereinstellungen konfiguriert werden. Der durchschnittliche Server zeigt einen serverspezifischen Fehler / eine Ausnahme an, wenn das POST-Limit überschritten wird, normalerweise als HTTP 500-Fehler.
quelle
Sie stellen hier zwei separate Fragen:
Wie bereits erwähnt, legt HTTP selbst keine fest codierte Begrenzung der Anforderungslänge fest. Browser haben jedoch Beschränkungen zwischen 2 KB und 8 KB (255 Bytes, wenn wir zählen sehr alte Browser zählen).
Das ist derjenige, auf den niemand geantwortet hat.
HTTP 1.1 definiert den Statuscode
414 Request-URI Too Long
für die Fälle, in denen ein vom Server definiertes Limit erreicht wird. Weitere Details zu RFC 2616 finden Sie hier .Für den Fall von vom Client definierten Grenzwerten hat der Server keinen Sinn, etwas zurückzugeben, da der Server die Anforderung überhaupt nicht empfängt.
quelle
Browser-Limits sind:
Mehr wollen? Siehe diese Frage zum Stapelüberlauf .
quelle
Eine ähnliche Frage ist hier: Gibt es eine Begrenzung für die Länge einer GET-Anfrage?
Ich habe das Limit und mein Shared Hosting-Konto erreicht, aber der Browser hat eine leere Seite zurückgegeben, bevor sie auf den Server gelangt ist, glaube ich.
quelle
Technisch gesehen habe ich gesehen, dass HTTP GET Probleme haben wird, wenn die URL-Länge 2000 Zeichen überschreitet. In diesem Fall ist es besser, HTTP POST zu verwenden oder die URL zu teilen.
quelle
Wie bereits erwähnt, legt HTTP selbst keine fest codierte Begrenzung der Anforderungslänge fest. Browser haben jedoch Beschränkungen für das 2048-Zeichen, das in der GET-Methode zulässig ist.
quelle
Ja. Eine GET-Anfrage ist unbegrenzt.
Ich kann ~ 4000 Zeichen als Teil der Abfragezeichenfolge sowohl mit dem Chrome-Browser als auch mit dem Befehl curl senden.
Ich verwende einen Tomcat 8.x-Server, der die erwartete Antwort von 200 OK zurückgegeben hat.
Hier ist der Screenshot einer Google Chrome-HTTP-Anfrage (Ausblenden des Endpunkts, den ich aus Sicherheitsgründen versucht habe):
ANTWORT
quelle