首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带get参数的CURL Post请求,预期标头

带get参数的CURL Post请求,预期标头
EN

Stack Overflow用户
提问于 2014-12-28 22:18:04
回答 2查看 3K关注 0票数 1

我想在一个网站上使用CURL登录,看起来像这样

http://www.example.com/login.php?return=

参数将与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);
EN

回答 2

Stack Overflow用户

发布于 2014-12-28 22:24:20

您可以同时使用get和post

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/login.php?return=");

这就是get。

票数 0
EN

Stack Overflow用户

发布于 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,我想亲眼观察一下这种行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27677243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档