ERROR:
请求实体太大 请求的资源 /check.php 不允许请求数据与POST请求,或请求中提供的数据量超过容量限制。
Whar可能是造成这个错误的原因?我认为数据大小不是原因,我知道./check.php接受POST方法。它是否像某些安全漏洞一样?
的问候, aqif
答案 0 :(得分:15)
如果您真的想使用POST,那么您将按此顺序使用CURLOPT_POST和CURLOPT_POSTFIELDS。结果也很方便调试。
<?php
$params=array(
'a'=>'text1',
'b'=>'text2'
);
$curl=curl_init();
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$result=curl_exec($curl);
print $result;
编辑:只是一个注释,如果你想在帖子中不发送任何参数,请使用空数组。空字符串会破坏卷曲。
答案 1 :(得分:4)
不确定这是否会对任何人有所帮助,但以下是解决这个问题的原因:
我有以下内容:
$ch = curl_init($process_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$results = @curl_exec($ch);
CURLOPT_POST是造成问题的原因。我的实际curl不包含任何$ _POST变量,它只有一个$ _GET查询字符串。一旦我用CURLOPT_POST删除了这一行,一切都按预期工作。
我没有在CentOS安装上遇到这个问题,但是,我在Mac上使用OSX Lion和PHP 5.3 +
答案 2 :(得分:3)
如果您被迫发出不带参数的POST请求,可以将它们设置为空字符串或数组。这为我解决了这个问题。
无论
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
或者
curl_setopt($ch, CURLOPT_POSTFIELDS, array());
请注意,后者会隐式重置content-type标头。
答案 3 :(得分:2)
我遇到了与WFetch类似的问题。我自己指定了Content-Length标头,结果发现WFetch正在使用自己的Content-Length标头。删除我的Content-Length标题后,一切正常。 Curl也可以这样吗?
答案 4 :(得分:1)
那么,错误响应绝对不是一种安全措施。关于413 Request Entity Too Large
:
服务器拒绝处理请求,因为请求实体大于服务器愿意或能够处理的请求实体。服务器可以关闭连接以防止客户端继续请求。
您验证您的尺寸不是问题吗?许多webhost都有一个相当小的POST上传限制(很少有东西会抛出413)。
否则,可能是PHP脚本本身返回此响应(通过header()
)。
答案 5 :(得分:1)
如果使用curl_exec,则必须设置
curl_setopt($ch, CURLOPT_POSTFIELDS, **array()**);
如果您错过了,那么您将遇到错误413请求实体太大