我想在一个网站上使用CURL登录,看起来像这样
参数将与Post一起发送
curl_setopt($ch,CURLOPT_POST,TRUE);
参数= $data ("params“=> "param”);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
CURL正在设置一个
期望: 100-continue标头
我会得到一个
417 -期望失败
作为回应。
所以它不起作用了。当我尝试删除Expect标头时
Expect curl_setopt($ch,CURLOPT_HTTPHEADER,
(‘Expect:'));
CURL正在发送GET请求,而不是POST请求。我做错了什么?
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, $this->useragent);
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/login.php?return=");
curl_setopt($ch, CURLOPT_REFERER, "http://www.example.com/login.php");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
#curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect: '));
$data = array (
"param1" => $username,
"param2" => $password
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec ($ch);
curl_close($this->ch);
发布于 2014-12-28 22:24:20
您可以同时使用get和post
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/login.php?return=");
这就是get。
发布于 2019-06-16 00:26:46
除非post数据超过一定的大小,否则curl不会发送Expect头,您的示例代码也不会发送Expect头。如果您需要一些随机数据来在您的示例代码中生成Expect头,则添加'data'=>str_repeat("\x00",1*1024)
,这将添加1KB的空值,这将使您的示例代码发送Expect头。也就是说,我不能重现这个问题,这是没有删除Expect的POST请求:
POST / HTTP/1.1
Host: 127.0.0.1:9999
User-Agent: wut
Accept: */*
Referer: http://www.example.com/login.php
Content-Length: 1369
Content-Type: multipart/form-data; boundary=------------------------35f10eb804cdb5c6
Expect: 100-continue
--------------------------35f10eb804cdb5c6
Content-Disposition: form-data; name="param1"
username
--------------------------35f10eb804cdb5c6
Content-Disposition: form-data; name="param2"
password
--------------------------35f10eb804cdb5c6
Content-Disposition: form-data; name="data"
--------------------------35f10eb804cdb5c6--
如果我删除Expect头,下面是新的请求:
POST / HTTP/1.1
Host: 127.0.0.1:9999
User-Agent: wut
Accept: */*
Referer: http://www.example.com/login.php
Content-Length: 1369
Content-Type: multipart/form-data; boundary=------------------------0a1590cb9de6d248
--------------------------0a1590cb9de6d248
Content-Disposition: form-data; name="param1"
username
--------------------------0a1590cb9de6d248
Content-Disposition: form-data; name="param2"
password
--------------------------0a1590cb9de6d248
Content-Disposition: form-data; name="data"
--------------------------0a1590cb9de6d248--
正如您所看到的,curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect: '));
没有将请求类型从POST更改为GET,因此我投票决定以can not reproduce
的身份结束此问题
尽管如此,如果你真的认为删除头文件会改变你的请求类型,请在discord/facebook上随意contact me,我想亲眼观察一下这种行为。
https://stackoverflow.com/questions/27677243
复制相似问题