【问题标题】:Can HTTP POST be limitless?HTTP POST 可以无限吗?
【发布时间】:2011-02-22 06:28:10
【问题描述】:

我听说 HTTP POST 对它可以发送的数据大小没有规范限制。这是真的还是只是有一些非常高的限制?

【问题讨论】:

标签: http forms post limit


【解决方案1】:

令人惊讶的是,所有答案都在谈论 IIS,就好像那是唯一重要的 Web 服务器。甚至早在 2010 年问这个问题时,Apache 的数量就在 60%70% of the market share 之间。总之,

  • HTTP 协议未指定限制。
  • POST 方法允许发送比 GET 方法更多的数据,GET 方法受 URL length 限制 - 大约 2KB。
  • 最大 POST request body 大小在 HTTP 服务器上配置,通常范围为
    1MB 到 2GB
  • HTTP 客户端(浏览器或其他用户代理)可能有其自身的限制。因此,最大 POST 正文请求大小为 min(serverMaximumSize, clientMaximumSize)

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

【讨论】:

  • 在提到网络服务器的答案中,有两个提到 IIS,一个提到 Apache。无论如何,已经编辑了我对你的路标的答案,它更完整和最新。
  • 谢谢@DavidNeale!应该有一个badge :) 我会尽量保持这个答案的更新。刚刚为 nginx 添加了最大值。
  • 关于这个:“比GET方法更多的数据,受URL长度限制——大约2KB。”标题呢?根据this post,标题似乎允许大约 8-16KB 。
  • @DanDascalescu 请注意,nginx 在答案正文中拼写错误(如 ngix),因此最初在我的文本搜索中没有找到。
  • @BradHein:您有足够的代表来编辑答案;你为什么不这样做?
【解决方案2】:

EDIT (2019) 这个答案现在非常多余,但是another answer 提供了更多相关信息。

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

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方法本身对数据大小没有任何限制。

【讨论】:

【解决方案3】:

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

【讨论】:

  • 4GB 仍然是 Apache 的最大值吗?我 found it documented 是 2GB。
  • @DanDascalescu:我不知道,我已经很久没有这样做了。也许他们开始对LimitRequestBody 指令设置上限。
【解决方案4】:

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

我认为基本上,假设发送大量数据可以更安全。

【讨论】:

  • 对于超时等危险程度有多大?
【解决方案5】:

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

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

【讨论】:

  • 很好的编辑@Matt - 显示了删减重要事实而不是盲目链接的重要性
【解决方案6】:

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

【讨论】:

    【解决方案7】:

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

    【讨论】:

      猜你喜欢
      • 2021-07-10
      • 2011-11-17
      • 1970-01-01
      • 2011-02-28
      • 2014-03-31
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      相关资源
      最近更新 更多