我在使用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文件。
卷曲请求是请求HTTPS网页,但。如果它无法实现安全连接,它会不会通过错误? –
你确定吗?它连接到端口80,这意味着纯http。 –
啊,好点。当它无法建立https连接时,有没有可能cURL默默地连接到http而不是https?我将检查我是否在PHP中拥有SSL支持。 –