2016-02-09 72 views
0

我做了一个POST请求,打印出标题出来的信息,并注意到被视为GET。这种行为的原因是什么?cURL:POST请求被视为GET

HEADER出的数据:

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 

休息编:

$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>"; 
+3

是'url_setopt_array'你做的事,或者只是一个错字,应该是'curl_opt_array'。并且请注意,由于您已开启“跟踪位置”,因此curl **将会兑现30次重定向,这意味着重定向的网址将以GET方式提取。 –

+0

复制粘贴代码时C丢失了。对此感到抱歉:)所以你说:关闭followlocation,你将能够发送POST数据? – brumbrum

+0

尝试在$ options键周围加引号,否则可能会将它们视为常量。 – aynber

回答

1

你只显示一个请求,我怀疑这是第二个请求,其中第一个是POST和您在这里看到的GET是在遵循重定向之后完成的。

curl 可能当根据响应中的30x代码进行重定向并且行为受HTTP 1.1规范(RFC 7230和朋友)指导时切换到GET。