Kann HTTP POST unbegrenzt sein?

91

Ich habe gehört, dass HTTP POST keine Spezifikationsbeschränkung für die Datengröße hat, von der es gesendet werden kann. Ist das wahr oder gibt es nur eine wirklich hohe Grenze?

IAdapter
quelle

Antworten:

71

EDIT (2019) Diese Antwort ist jetzt ziemlich überflüssig, aber es gibt eine andere Antwort mit relevanteren Informationen.

Es kommt eher auf den Webserver und den Webbrowser an:

Internet Explorer Alle Versionen 2 GB-1
Mozilla Firefox Alle Versionen 2 GB-1
IIS 1-5 2 GB-1
IIS 6 4 GB-1

Obwohl IIS standardmäßig nur 200 KB unterstützt, muss die Metabasis geändert werden, um dies zu erhöhen.

http://www.motobit.com/help/scptutl/pa98.htm

Die POST-Methode selbst hat keine Begrenzung für die Datengröße.

David Neale
quelle
upvote für die Erwähnung von Metabase.XML und ich haben verschiedene Möglichkeiten aufgelistet, um die Größenbeschränkung für das Hochladen von Dateien zu ändern, da dies nützlich sein könnte.
Durai Amuthan.H
Durch Eingabe des folgenden Befehls an der Eingabeaufforderung wird die Größenbeschränkung für das Hochladen von Dateien erhöht. "Cscript C: \ inetpub \ adminscripts \ adsutil.vbs set w3svc / ASPMaxRequestEntityAllowed 10484880" (in Byte) Referenz: serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan.H
oder suchen Sie die Datei metabase.xml in C: \ windows \ sytem32 \ inetserv \ path und bearbeiten Sie sie. Stellen Sie jedoch sicher, dass die direkte Bearbeitung der Metabasis aktivieren
Durai Amuthan.H
oder Fügen Sie in Ihrer web.config eine Zeile unter Ihrer system.web hinzu. <httpRuntime executeTimeout = "54000" maxRequestLength = "512000" /> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Amuthan.H
Aktuelle Webserver (2019) finden Sie in dieser Antwort .
Dan Dascalescu
69

Es ist ziemlich erstaunlich, wie alle Antworten über IIS sprechen, als wäre dies der einzige Webserver, der von Bedeutung ist. Bereits 2010, als die Frage gestellt wurde, hatte Apache zwischen 60% und 70% des Marktanteils . Wie auch immer,

  • Das HTTP-Protokoll gibt kein Limit an.
  • Die POST-Methode ermöglicht das Senden von weit mehr Daten als die GET-Methode, die durch die URL-Länge begrenzt ist - etwa 2 KB.
  • Die maximale Größe des POST-Anforderungskörpers wird auf dem HTTP-Server konfiguriert und liegt normalerweise zwischen 1
    MB und 2 GB
  • Der HTTP-Client (Browser oder anderer Benutzeragent) kann seine eigenen Einschränkungen haben. Daher beträgt die maximale Größe der POST-Body-Anforderung min(serverMaximumSize, clientMaximumSize).

Hier sind die POST-Körpergrößen für einige der beliebtesten HTTP-Server:

Dan Dascalescu
quelle
4
Von diesen Antworten, die einen Webserver erwähnen, erwähnen zwei IIS und eine Apache. Wie auch immer, ich habe meine Antwort auf Ihren Wegweiser bearbeitet, der vollständiger und aktueller ist.
David Neale
3
Vielen Dank, dass Sie @DavidNeale! Dafür sollte es ein Abzeichen geben :) Ich werde versuchen, diese Antwort auf dem neuesten Stand zu halten. Ich habe gerade das Maximum für Nginx hinzugefügt.
Dan Dascalescu
Dazu: "Mehr Daten als die GET-Methode, die durch die URL-Länge begrenzt ist - ca. 2 KB." Was ist mit Headern? Per diesen Beitrag scheint es , dass Header für etwa 8-16KB ermöglichen.
Hans Vonn
27

Es gibt keine Begrenzung gemäß dem HTTP-Protokoll selbst, aber Implementierungen haben eine praktische Obergrenze. Ich habe mit POST Daten über 4 GB an Apache gesendet, aber einige Server hatten zu diesem Zeitpunkt ein Limit von 4 GB.

Greg Hewgill
quelle
Ist 4 GB immer noch das Maximum für Apache? Ich habe festgestellt , dass es 2 GB dokumentiert ist.
Dan Dascalescu
@ DanDascalescu: Ich weiß nicht, ich habe das schon lange nicht mehr gemacht. Vielleicht haben sie damit begonnen, der LimitRequestBodyRichtlinie eine Obergrenze aufzuerlegen .
Greg Hewgill
6

POST ermöglicht das Senden einer beliebigen Datenlänge an einen Server, es gibt jedoch Einschränkungen aufgrund von Zeitüberschreitungen / Bandbreite usw.

Ich denke im Grunde ist es sicherer anzunehmen, dass es nicht in Ordnung ist, viele Daten zu senden.

Russ Clarke
quelle
2
Gibt es Faustregeln dafür, wie viel für Auszeiten und dergleichen gefährlich wird?
Vextorspace
3

Verschiedene IIS-Webserver können gemäß diesem (jetzt gelöschten) Artikel unterschiedliche Datenmengen im "Header" verarbeiten. http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;

Beachten Sie, dass die Anzahl der FORM-Elemente, die Sie per POST übergeben können, nicht begrenzt ist, sondern nur die Gesamtgröße aller Name / Wert-Paare. Während GET auf nur 1024 Zeichen beschränkt ist, sind POST-Daten unter IIS 4.0 auf 2 MB und unter IIS 5.0 auf 128 KB beschränkt. Jeder Name / Wert ist auf 1024 Zeichen begrenzt, wie in der SGML-Spezifikation festgelegt. Dies gilt natürlich nicht für Dateien, die mit enctype = 'multipart / form-data' hochgeladen wurden. Ich hatte keine Probleme beim Hochladen von Dateien im Bereich von 90 bis 100 MB mit IIS 5.0, abgesehen davon, dass der Wert für server.scriptTimeout erhöht werden musste sowie meine Geduld!

Amelvin
quelle
1
Gute Bearbeitung @Matt - zeigt, wie wichtig es ist, die wichtigsten Fakten herauszuschneiden, anstatt blind zu verknüpfen
amelvin
0

In einer Anwendung, die ich entwickelte, stieß ich auf eine POST-Grenze von etwa 2 KB. Es stellte sich heraus, dass ich die Parameter versehentlich in die URL codiert habe, anstatt sie im Body zu übergeben. Wenn Sie dort also auf ein Problem stoßen, gibt es definitiv eine sehr kleine Beschränkung für die Größe der POST-Daten, die Sie verschlüsselt in die URL senden können.

brycejl
quelle
0

HTTP hat möglicherweise keine Obergrenze, Webserver jedoch möglicherweise eine. In ASP.NET gibt es ein Standard-Akzeptanzlimit von 4 MB, aber Sie (der Entwickler / Webmaster) können dieses Limit höher oder niedriger ändern.

Hans Keing
quelle