2013-10-31 75 views
0

我在使用PHP的cURL庫請求帶有cookie的頁面時出現問題。代碼如下:CURLOPT_COOKIEFILE不發送cookie參數

$ch = curl_init(); 
$options = array(
    CURLOPT_URL => 'https://website.com/members', 
    CURLOPT_HEADER => false, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_COOKIEFILE => dirname(__FILE__) . '/../../cookie.txt' 
); 
curl_setopt_array($ch, $options); 
$response = json_decode(curl_exec($ch)); 
curl_close($ch); 

dirname(__FILE__) . '/../../cookie.txt'指向一個有效的cookie文件,如我所傾倒使用PHP該文件​​的內容進行驗證。因此,PHP對該文件具有讀取權限(並執行,我將該文件設置爲chmod 0777)。當我轉儲請求我看到這一點:

* About to connect() to website.com port 80 (#0) 
* Trying 88.19.264.3... * connected 
> GET /members HTTP/1.1 
Accept: */* 
Cookie: __utmz=1.1383258121.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=1; __utmb=1.8.10.1383258121; __utma=1.259269816.1383258121.1383258121.1383258121.1; sync=1; lang=en; https=1 
Host: website.com 

< HTTP/1.1 200 OK 
< Server: nginx 
< Date: Thu, 31 Oct 2013 22:36:07 GMT 
< Content-Type: text/plain 
< Transfer-Encoding: chunked 
< Connection: keep-alive 
< Keep-Alive: timeout=8 
< Vary: Accept-Encoding 
< Access-Control-Allow-Origin: * 
< 
* Connection #0 to host website.com left intact 
* Closing connection #0 

小甜餅報頭被設置與cookie.txt內容,但是它缺少這是需要驗證會話的auth參數。然而,參數auth肯定存在於cookie.txt文件中。

我只是不明白爲什麼cURL只會發送cookie.txt文件中的一些參數,而不是auth參數。我嘗試刪除所有不需要的參數,只留下auth,但它仍未發送。

作爲參考,auth參數如下:

.website.com  TRUE /  TRUE 1385850138.917861  auth y2a4232344b4x2h403a423fgw2c443g4u2c49hg48494g4a4q2o5g4g4v274b4i4a4k5e4e4y2a4c4g4s2l56323b4d453s5946453b4t2c4y7d47336 

我甩使用捲曲在命令行,所以我知道這是正確的格式的cookie文件。

回答

0

4.參數TRUE表示cookie只會通過安全連接發送。

cookie文件格式:http://curl.haxx.se/mail/archive-2005-03/0099.html

關於安全cookie:http://en.wikipedia.org/wiki/HTTP_cookie#Secure_cookie

+1

捲曲請求是請求HTTPS網頁,但。如果它無法實現安全連接,它會不會通過錯誤? –

+0

你確定嗎?它連接到端口80,這意味着純http。 –

+0

啊,好點。當它無法建立https連接時,有沒有可能cURL默默地連接到http而不是https?我將檢查我是否在PHP中擁有SSL支持。 –