HTTP POST 可以是无限的吗?

使用 HTTPPOST 方法可以发送的最大数据大小的规范是什么?

260183 次浏览

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

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

我认为基本上,假设 没有可以发送大量数据是比较安全的。

编辑(2019) 这个答案现在是相当多余的,但有 另一个答案更相关的信息。

这取决于网络服务器和网络浏览器:

Internet Explorer 所有版本2GB-1
Mozilla Firefox 所有版本2GB-1
IIS 1-52GB-1
IIS 64GB-1

尽管 IIS 在默认情况下只支持200KB,但是元数据库需要进行修改以增加这个值。

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

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

不同的 IIS 网络服务器可以处理不同数量的数据在’头’,根据这个(现已删除)的文章;

注意,对 可以传递的 FORM 元素的数量 通过 POST,但只在聚合上 所有名称/值对的大小 GET 最低限度为1024 字符,POST 数据限制为2 在 IIS4.0上使用 MB,在 IIS5.0上使用128 KB。 每个名称/值限制为1024 字符,由 SGML 强加 当然这不适用于 上载的文件 Enctype = ‘ multipart/form-data’.. 上传文件没有问题 在90-100MB 的范围内使用 IIS 除了必须增加 server.scriptTimeout 值以及 我的耐心!

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

在我开发的一个应用程序中,我遇到了大约2KB 的 POST 限制。结果是,我不小心将参数编码到 URL 中,而没有在主体中传递它们。因此,如果您遇到一个问题,那么您可以发送编码到 URL 中的 POST 数据的大小肯定有一个非常小的限制。

所有的答案都在谈论 IIS,好像这是唯一重要的网络服务器。甚至在2010年问这个问题的时候,Apache 还是在 百分之六十70% 的市场份额之间。总之,

  • HTTP 协议没有指定限制。
  • POST 方法允许发送比 GET 方法多得多的数据,GET 方法受到 网址长度的限制——大约2KB。
  • 最大 POST 请求主体大小在 HTTP 服务器上配置,通常从
    1MB 到2GB
  • HTTP 客户端(浏览器或其他用户代理)可能有自己的局限性。因此,POST 体请求的最大大小是 min(serverMaximumSize, clientMaximumSize)

下面是一些比较流行的 HTTP 服务器的 POST 主体大小: