对不起,如果这是重复的,我会认为它会找不到任何东西。
我有一个flex应用程序,我通过IE将数据发送回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字符串(比如高达5mb)。
如果它有任何区别:浏览器将始终是IE(我们的产品需要它),帖子来自flexService中的httpService,web服务器是php,DB是mySql。
答案 0 :(得分:191)
这取决于服务器配置。如果您正在使用Linux或类似的PHP,您可以使用.htaccess配置文件来控制它,如下所示:
#set max post size
php_value post_max_size 20M
而且,是的,我可以亲自证明这一点有效:)
如果您正在使用IIS,我不知道您如何设置此特定值。
答案 1 :(得分:69)
请求(GET和POST)的url部分可能受浏览器和服务器的限制 - 通常安全大小为2KB,因为几乎没有使用较小限制的浏览器或服务器。
请求(POST)的主体通常由服务器在字节大小的基础上限制,以防止一种类型的DoS攻击(请注意,这意味着字符转义可以增加正文的字节大小)。最常见的服务器设置是10MB,但所有流行的服务器都允许通过设置文件或面板增加或减少它。
*旧手机或其他小型设备浏览器存在一些例外情况 - 在这些情况下,它更多地是在设备上为此目的保留的堆空间的功能,然后是其他任何东西。
答案 2 :(得分:46)
此外,在PHP.INI文件中有一个设置:
max_input_vars
在我的PHP版本中:5.4.16默认为1000。
从手册中: “可以接受多少输入变量(限制分别应用于$ _GET,$ _POST和$ _COOKIE superglobal)”
参考:http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars
答案 3 :(得分:11)
您可以通过设置php.ini变量来发布大量数据:max_input_vars
此变量的默认大小为1000,但如果要发送大量数据,则必须相应地增加大小。
如果你不能从ini_set设置大小,你必须通过htaccess
或直接对php.ini文件进行更改。
max_input_vars 2500
memory_limit 256M
答案 4 :(得分:5)
大卫指出,在大多数情况下,我会选择KB。
php_value post_max_size 2KB
注意:我的表单很简单,只有几个文本框,而不是长文本。
答案 5 :(得分:1)
由http服务器决定是否有限制。我使用的产品允许管理员配置限制。
答案 6 :(得分:1)
默认情况下,发布请求的最大大小为8mb。但您可以根据自己的要求进行修改。 可以通过打开php.ini文件(php配置设置)来完成修改。
查找
post_max_size=8M //for me, that was on line:771
根据您的要求更换8。
答案 7 :(得分:0)
适用于因网站托管而无法更改php配置的开发人员。(我的设置为256MB最大大小,1000个最大变量)
我遇到了同样的问题,即在服务器端仅收到5个带有子结构的大数据对象(关联数组)中的2个。
我发现整个子结构在发布请求中被“扁平化”。因此,一个对象变成了数百个文字变量。最后,实际上不是发送5个Object变量,而是发送了数百个基本变量。
解决方案,在这种情况下,是将每个子结构序列化为String。然后,它在服务器上作为5个String变量接收。
例:
{variable1:JSON.stringify(myDataObject1),variable2:JSON.stringify(myDataObject2)...}
答案 8 :(得分:-1)
对此最好的解决方案之一,您不要使用多个或超过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
,这对服务器有害,因为它使用了更多的服务器缓存,这有时会使服务器崩溃。