591 Stimmen

Maximale Länge der HTTP-GET-Anfrage

Was ist die maximale Länge einer HTTP GET Anfrage?

Gibt es einen definierten Antwortfehler, den der Server zurückgeben kann/sollte, wenn er eine GET-Anfrage erhält, die diese Länge überschreitet?

Dies steht im Zusammenhang mit einer Webdienst-API, obwohl es interessant ist, auch die Grenzen des Browsers zu sehen.

546voto

BalusC Punkte 1034465

Das Limit hängt sowohl vom verwendeten Server als auch vom Client ab (und ggf. auch vom Proxy, den der Server oder der Client verwendet).

Die meisten Webserver haben ein Limit von 8192 Bytes (8 KB), das in der Regel irgendwo in der Serverkonfiguration konfiguriert werden kann. Was die Client-Seite betrifft, so warnt die HTTP 1.1-Spezifikation sogar vor dieser Problematik. Hier ist ein Auszug aus Kapitel 3.2.1 :

Hinweis: Server sollten vorsichtig sein, wenn sie von URI-Längen über 255 Bytes abhängig sind, da einige ältere Client- oder Proxy-Implementierungen diese Längen möglicherweise nicht richtig unterstützen.

In Internet Explorer und Safari liegt die Grenze bei 2 KB, in Opera bei 4 KB und in Firefox bei 8 KB. Wir können also davon ausgehen, dass 8 KB die maximal mögliche Länge ist und dass 2 KB eine erschwinglichere Länge ist, auf die man sich auf der Serverseite verlassen kann, und dass 255 Bytes die sicherste Länge ist, um davon auszugehen, dass die gesamte URL ankommt.

Wenn das Limit entweder im Browser oder auf dem Server überschritten wird, werden in den meisten Fällen die Zeichen außerhalb des Limits ohne Warnung abgeschnitten. Einige Server können jedoch eine HTTP 414-Fehler .

Wenn Sie große Daten senden müssen, sollten Sie POST statt GET verwenden. Seine Grenze ist viel höher, hängt aber mehr vom verwendeten Server als vom Client ab. In der Regel sind bis zu 2 GB auf einem durchschnittlichen Webserver zulässig.

Auch dies ist in den Servereinstellungen konfigurierbar. Der durchschnittliche Server zeigt eine serverspezifische Fehlermeldung/Ausnahme an, wenn das POST-Limit überschritten wird, normalerweise als HTTP 500-Fehler.

159voto

Edurne Pascual Punkte 5372

Sie stellen hier zwei verschiedene Fragen:

Wie lang darf eine HTTP-GET-Anfrage maximal sein?

Wie bereits erwähnt, gibt es bei HTTP selbst keine fest kodierte Begrenzung der Anfragelänge, aber die Browser haben Begrenzungen von 2 KB bis 8 KB (255 Byte, wenn wir die sehr alt Browsern).

Gibt es einen definierten Antwortfehler, den der Server zurückgeben kann/sollte, wenn er eine GET-Anfrage erhält, die diese Länge überschreitet?

Das ist die Frage, die niemand beantwortet 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 Einzelheiten finden Sie unter RFC 2616 .

Im Fall der vom Kunden definierten Grenzen hat es keinen Sinn, dass der Server etwas zurückgibt, da der Server die Anfrage gar nicht erhält.

43voto

Jiraff537 Punkte 415

Die Browsergrenzen sind:

Browser           Address bar    document.location
                                 or anchor tag
---------------------------------------------------
Chrome                32779           >64k
Android                8192           >64k
Firefox                >64k           >64k
Safari                 >64k           >64k
Internet Explorer 11   2047           5120
Edge 16                2047          10240

Sie wollen mehr? Siehe diese Frage auf Stack Overflow .

5voto

jay Punkte 10197

Eine ähnliche Frage stellt sich hier: Gibt es eine Begrenzung für die Länge einer GET-Anfrage?

Ich habe das Limit erreicht und auf meinem Shared-Hosting-Konto, aber der Browser hat eine leere Seite zurückgegeben, bevor er den Server erreicht hat, glaube ich.

5voto

MSIslam Punkte 4279

Technisch gesehen habe ich gesehen, dass es bei HTTP GET zu Problemen kommt, wenn die URL-Länge über 2000 Zeichen hinausgeht. In diesem Fall ist es besser, HTTP POST zu verwenden oder die URL zu teilen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X