doudilin1225 2016-02-09 14:30
浏览 196
已采纳

cURL:POST请求被视为GET

I made a POST request, printed out header out information and noticed that is gets treated as GET. What is the reason for such behaviour?

HEADER OUT DATA:

GET /inx/aeGDrYQ HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept: */*
Cookie: PHPSESSID=t762fd0nbi12p3hrgb9sgx9k20; ____ri=4485; safemode=1; session=eyJpdiI6Im1HQzlNR1JhMTNDc0JRelYyRVwveUp6N0JxZG56Z2p5K094eSs3YU5HQ3dzPSIsInZhbHVlIjoiVXBPYzN4TVNReURhVnMxQlZ1TndLZ0dYUjltbUVEcW11bkJJMDdMRVZoZ0hHMjRXZ2p6azlcL1FWXC93NnZWN3oreDcxQms3aGlcL3l0MG1vTjd1V21FcmVCVzFnQjVuMUY5dHBWeUlTbU9NSjJcL1d5TlwvTW11ZWp1eHpNd3d4eFZTamV6aThsNldkdlN3aFo0XC9sTnVnU0tXVDRKbWVBU25VU0hJaDREQ1J5M2xDXC9zRUc5OXhWMWJWWG9jYndhczYyZW4xMkUxb3BoU3FmQmMrNVdzM3RqQmgzeHY1NVJ5RXRTNGZOdmQ4dTRCbmRtWVZBN210QVVEVk1BNTFPc1NQcFU3bnd4NEpKbnRaTFliRWNzbkZaXC9YWUF1Nld1ekZSbjVGRXBuZzNoRlBNND0iLCJtYWMiOiI4OWEwNmMyZGVkYjFiYTlmNDY0MDE5MTQwNzE1YzNhYWJjYTA5YjJ3MWMyZjgwMTViN2MyYmI0OWUyNmMwNjM0In0%3D; toastMsg=2; ts1=11e2bb0a86bfb9669c36Xcc407e1e3b3decefcce 

REST OF THE CODE:

$ch = curl_init('https://example.com/login');

$postData = [
    'name'       => $name,
    'pass'       => $pass
];

$postDataStr = http_build_query($postData);

# Append some fields to the CURL options array to make a POST request. I left out headers, since
# they don't change and added return_transfer for echoing end results
$options[CURLOPT_POST] = 1;
$options[CURLOPT_POSTFIELDS] = $postDataStr;
$options[CURLOPT_HEADER]=1;
$options[CURLOPT_COOKIEJAR]=$cookie;
$options[CURLOPT_USERAGENT]= $useragent;


$options[CURLOPT_FOLLOWLOCATION] = true;
$options[CURLOPT_RETURNTRANSFER] = true;
$options[CURLINFO_HEADER_OUT] = true;

curl_setopt_array($ch, $options);

# Execute
$response = curl_exec($ch);
// echo $response;

$request = curl_getinfo($ch, CURLINFO_HEADER_OUT);
echo "Request sent: $request<br>";
  • 写回答

1条回答 默认 最新

  • dpi74187 2016-02-09 18:56
    关注

    You're only showing one request, and I suspect it is the second request where the first was a POST and the GET you see here is the one done after a redirect has been followed.

    curl may switch to a GET when following a redirect based on which 30x code is in the response and the behavior is guided by the HTTP 1.1 spec (RFC 7230 and friends).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作