HTTP POST可以无限使用吗?


Answers:


75

编辑(2019)这个答案现在已经很多余了,但是还有另一个答案具有更相关的信息。

而是取决于Web服务器和Web浏览器:

Internet Explorer 所有版本2GB-1
Mozilla Firefox 所有版本2GB-1
IIS 1-5 2GB-1
IIS 6 4GB-1

尽管IIS默认情况下仅支持200KB,但是配置数据库需要修改以增加此大小。

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

POST方法本身对数据大小没有任何限制。


我提到了Metabase.XML并表示支持,我列出了多种更改文件上传大小限制的方法,因为它可能很有用。
Durai Amuthan.H 2014年

在命令提示符下输入以下命令有助于增加文件上传大小限制。“ cscript C:\ inetpub \ adminscripts \ adsutil.vbs set w3svc / ASPMaxRequestEntityAllowed 10484880”(以字节为单位)参考:serverintellect.com/support/iis/uploaddownload-size-limits -iis6
Durai Amuthan.H 2014年

或在C:\ windows \ sytem32 \ inetserv \路径中找到metabase.xml并进行编辑,但确保已启用“启用直接元数据库编辑”。参考:banmanpro.com/support2/file_upload_limits.asp
Durai Amuthan.H 2014年

或在你的web.config,添加的System.Web下一个行<的httpRuntime executionTimeout = “54000”的maxRequestLength = “512000”/> weblogs.asp.net/mhawley/archive/2004/05/11/129824.aspx
Durai Amuthan.H 2014年

对于当前(2019年)的Web服务器,请参阅此答案
Dan Dascalescu,

76

令人惊讶的是,所有答案都是关于IIS的,好像那是唯一重要的Web服务器。甚至早在2010年提出该问题时,Apache便拥有60%70%的市场份额。无论如何,

  • HTTP协议未指定限制。
  • POST方法比GET方法发送的数据要多得多,后者受到URL长度的限制-大约2KB。
  • POST请求主体的最大大小是在HTTP服务器上配置的,通常范围是
    1MB至2GB
  • HTTP客户端(浏览器或其他用户代理)可以有其自身的局限性。因此,最大POST正文请求大小为min(serverMaximumSize, clientMaximumSize)

以下是一些较流行的HTTP服务器的POST正文大小:


4
在提到网络服务器的答案中,有两个提到IIS,一个提到Apache。无论如何,已经编辑了我的答案以向您发布路标,该路标更加完整和最新。
大卫·尼尔

3
谢谢@DavidNeale!应该有一个徽章:)我将尽力使这个答案保持最新。刚刚添加了nginx的最大值。
Dan Dascalescu

关于此内容:“数据比GET方法更多,后者受URL长度限制-大约2KB。” 标题呢?根据这篇文章,标题似乎允许大约8-16KB。
汉斯·沃恩

27

根据HTTP协议本身没有限制,但是实现会有实际的上限。我已经使用POST向Apache发送了超过4 GB的数据,但是某些服务器当时的限制为4 GB。


4GB仍然是Apache的最大容量吗?我发现它记录为2GB。
Dan Dascalescu,

@DanDascalescu:我不知道,我已经很长时间没有这样做了。也许他们开始对该LimitRequestBody指令施加上限。
Greg Hewgill '19

6

POST允许将任意长度的数据发送到服务器,但是基于超时/带宽等存在限制。

我认为,基本上,它是更安全的假设,这是没关系发送大量数据。


2
有什么经验法则说明超时等危险有多少?
vextorspace 2014年

3

根据本文(现已删除)的文章,不同的IIS Web服务器可以在“标头”中处理不同数量的数据;http://classicasp.aspfaq.com/forms/what-is-the-limit-on-form/post-parameters.html ;

请注意,您可以通过POST传递的FORM元素数量没有限制,但仅限制所有名称/值对的总大小。尽管GET限制为低至1024个字符,但IIS 4.0上的POST数据限制为2 MB,而IIS 5.0上的POST数据限制为128 KB。根据SGML规范的规定,每个名称/值均限制为1024个字符。当然,这不适用于使用enctype ='multipart / form-data'上传的文件...除了使用增加server.scriptTimeout值之外,使用IIS 5.0上传90-100 MB范围的文件没有问题。以及我的耐心!


1
好的编辑@Matt-显示了摘掉重要事实而不是盲目链接的重要性
amelvin

1

在我正在开发的应用程序中,我遇到了大约2KB的POST限制。原来是我不小心将参数编码到URL中,而不是将其传递到正文中。因此,如果您在那里遇到问题,可以将编码后发送到URL的POST数据的大小肯定有非常小的限制。


0

HTTP可能没有上限,但是Web服务器可能有一个上限。在ASP.NET中,默认接受限制为4 MB,但是您(开发人员/网站管理员)可以将其更改为更高或更低。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.