0

Web 浏览器限制了可以发布多少数据(字符)以防止攻击。在 IE 中大约有 2000 个字符,在 Chrome 中大约有 65,000 个字符。

我正在尝试发布一个表单,其中包含一个包含 200,000 多个字符的字段(准确地说是一个 json 强的向量)。

这比任何浏览器所允许的都要多,因此接收帖子的 PHP 页面只能看到大约 40% 的数据。

我能想到解决这个问题的唯一方法是流式传输表单帖子,以便 PHP 可以增量接收它。

这可能与 $raw = file_get_contents('php://input'); 例如,结合“应用程序/八位字节流”的表单编码类型?

非常感谢, Seb

4

3 回答 3

1

如果您在 Linux 或类似系统下使用 PHP,则可以使用 控制这些.htaccess,如下所示:

#set max post size
php_value post_max_size 50M

希望这将允许您发送更多数据,而不是搞乱编码。

请求的 url 部分(GET 和 POST)可以受到浏览器和服务器的限制 - 通常安全大小为 2KB,因为几乎没有浏览器或服务器使用较小的限制。

请求的正文(POST)通常*由服务器以字节大小为基础*,以防止某种类型的 DoS 攻击(请注意,这意味着字符转义会增加正文的字节大小)。最常见的服务器设置是 10MB,尽管所有流行的服务器都允许通过设置文件或面板来增加或减少此设置。

于 2013-01-24T20:06:12.740 回答
1

您将 URL 长度限制与上传限制混淆了。通过 URL 传递的数据是一个GET查询,并且这些是基于每个浏览器的长度限制的。

如果您需要传递任意“大”数据,则使用 POST,它没有任意客户端长度限制,仅受服务器配置的限制。

于 2013-01-24T20:06:24.730 回答
0

好的 - 发现问题所在。数据在到达 Apache 之前通过 WAF 过滤器。这是正在运行的 mod_security,其发布限制为 64Kb。

于 2013-02-01T13:41:30.890 回答