我尝试使用Curl向URL发出POST请求,但请求实体太大

2exbekwf  于 2023-08-06  发布在  其他
关注(0)|答案(6)|浏览(188)

错误:
错误提示-页面未找到抱歉,你所请求的页面不存在,可能已被删除或您输错了网址!
出现此错误的原因可能是什么?我认为数据大小不能是原因,我知道./check.php接受POST方法。是不是有什么安全措施限制访问?

clj7thdc

clj7thdc1#

如果你真的想使用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;

字符串
编辑:只是一个说明,如果你想在帖子中不发送参数,请使用空数组。空字符串将破坏 curl 。

xytpbqjk

xytpbqjk2#

我不确定这是否能帮助到任何人,但以下是我解决问题的方法:
我有以下几点:

$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+时遇到了这个问题

l2osamch

l2osamch3#

如果你被迫发出一个没有参数的POST请求,你可以将它们设置为空字符串或数组。这为我解决了这个问题。
都行

curl_setopt($ch, CURLOPT_POSTFIELDS, '');

字符串
或者

curl_setopt($ch, CURLOPT_POSTFIELDS, array());


请注意,后者会隐式重置content-type头。

g6ll5ycj

g6ll5ycj4#

我在WFetch遇到了类似的问题。我自己指定了Content-Length头,结果发现WFetch在自己的Content-Length头上添加了tacking。删除Content-Length头后,一切正常。Curl也是这样吗?

p5cysglq

p5cysglq5#

这个错误响应肯定不是安全措施。RFC 2616是这样描述413 Request Entity Too Large的:
服务器拒绝处理请求,因为请求实体比服务器愿意或能够处理的要大。服务器可以关闭连接以防止客户端继续请求。
你有没有验证尺寸不是问题?许多网络主机有一个相当小的POST上传限制(很少有东西会抛出413)。
否则,可能是PHP脚本本身返回此响应(通过header())。

agxfikkp

agxfikkp6#

如果使用必须设置的curl_exec
第一个月
如果你错过了,那么你会有错误413请求实体太大

相关问题