php HTTP POST请求的大小限制是多少?

nle07wnf  于 12个月前  发布在  PHP
关注(0)|答案(9)|浏览(83)

对不起,如果这是重复的,我想它会,但找不到任何东西。
我有一个Flex应用程序,我通过Internet Explorer将数据发送回PHP/MySQL服务器。我还没有遇到任何问题,但提前知道这一点可能会让我省去很多挫折和工作。通过HTTP发布数据是否有大小限制?

  • 这篇文章说“不”:

http://www.netlobo.com/ie_form_submit.html

  • 这个讨论说“是”:

http://bytes.com/topic/php/answers/538226-what-maximum-limit-using-post-method
我在网上找到的东西都在来回穿梭。所以将答案限制在亲自测试/验证的数字。
我想回一个XML字符串,可以是相当大的(比如说高达5 MB)。
如果有什么区别的话:浏览器将始终是Internet Explorer(我们的产品要求它),POST来自Flex中的HTTPService,Web服务器是PHP,数据库是MySQL。

2ul0zpep

2ul0zpep1#

这取决于服务器配置。如果你在Linux或类似的环境下使用PHP,你可以使用.htaccess配置文件来控制它,如下所示:

#set max post size
php_value post_max_size 20M

而且,是的,我个人可以证明这是有效的:)
如果你使用IIS,我不知道你如何设置这个特定的值。

2w2cym1i

2w2cym1i2#

请求的URL部分(GET和POST)可以受到浏览器和服务器的限制-通常安全大小为2KB,因为几乎没有浏览器或服务器使用更小的限制。
请求(POST)的正文通常1由服务器根据字节大小进行限制,以防止某种类型的DoS攻击(请注意,这意味着 * 字符转义 * 可能会增加正文的字节大小)。最常见的服务器设置是10 MB,尽管所有流行的服务器都允许通过设置文件或面板增加或减少。
1* 一些例外情况存在于较旧的手机或其他小型设备浏览器中-在这些情况下,它更多的是设备上为此目的保留的堆空间的函数,而不是其他任何东西。

nue99wik

nue99wik3#

另外,在PHP.INI文件中有一个设置:

max_input_vars

在我的PHP版本中:5.4.16默认为1000。
来自手册:可以接受多少输入变量(限制分别应用于$_GET、$_POST和$_COOKIE超全局)
参考:http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars

ymzxtsji

ymzxtsji4#

您可以通过设置php.ini变量来发布大量数据:max_input_vars这个变量的默认大小是1000,但是如果你想发送大量的数据,你必须相应地增加它的大小。如果你不能从ini_set设置大小,你必须通过htaccess或者直接修改php.ini文件来设置。

max_input_vars  2500
memory_limit    256M
ztigrdn8

ztigrdn85#

正如大卫所指出的,在大多数情况下,我会选择KB。

php_value post_max_size 2K

注意:我的表单很简单,只有几个文本框,不是很长的文本。
(PHP KB简写为K,如此处所述。)

wwtsj6pe

wwtsj6pe6#

默认情况下,发布请求的最大大小为8mb。但您可以根据自己的要求进行修改。修改可以通过打开php.ini文件(php配置设置)来完成。
查找

post_max_size=8M  //for me, that was on line:771

根据您的要求更换8个。

wpx232ag

wpx232ag7#

最好的解决方案之一是,您不使用多个或超过1,000个输入字段。您可以使用任何特殊字符连接多个输入,例如。@
看这个:

<input type='text' name='hs1' id='hs1'>
<input type='text' name='hs2' id='hs2'>
<input type='text' name='hs3' id='hs3'>
<input type='text' name='hs4' id='hs4'>
<input type='text' name='hs5' id='hs5'>

<input type='hidden' name='hd' id='hd'>

使用任何脚本(JavaScript或JScript),

document.getElementById("hd").value = document.getElementById("hs1").value+"@"+document.getElementById("hs2").value+"@"+document.getElementById("hs3").value+"@"+document.getElementById("hs4").value+"@"+document.getElementById("hs5").value

这样,您将绕过max_input_vars问题。如果在php.ini文件中增加max_input_vars,这对服务器是有害的,因为它使用更多的服务器缓存内存,这有时会使服务器崩溃。

fcwjkofz

fcwjkofz8#

由http服务器决定是否有限制。我工作的产品允许管理员配置限制。

ws51t4hk

ws51t4hk9#

对于开发者谁不能改变php配置,因为虚拟主机。(我的设置256MB最大大小,1000最大变量)

我遇到了同样的问题,在服务器端只收到了5个大数据对象(关联数组)中的2个。
我发现在帖子请求中,整个子结构正在被“压平”。因此,一个对象变成了数百个文字变量。最后,它实际上发送的不是5个Object变量,而是几十个几百个elementar变量。

解决方案在本例中是将每个子结构序列化为String。然后它在服务器上作为5个字符串变量接收。示例:{variable1:JSON.stringify(myDataObject1),variable2:JSON.stringify(myDataObject2)...}

相关问题