使用CURL PHP连接的https GET请求,但不会返回响应

时间:2013-10-09 11:24:39

标签: php curl

我是使用cURL和https的新手。我想向https页面发出GET请求。我连接成功,但我没有得到我要求的页面。我得到的只是HTTP 200响应和0字节。

我尝试使用HTTP嗅探器调试HTTP对话。此外,我已从我服务器上的目标站点保存了证书。我做错了什么?

另外,遵循Can't connect to HTTPS site using cURL. Returns 0 length content instead. What can I do?

的建议

我已经去了http://curl.haxx.se/ca/cacert.pem,下载了证书并将其链接到我的代码中

$target = ADDR . 'xxx';
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/qld_cert.crt");
curl_setopt($ch, CURLOPT_URL, $target); // Define target site
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); // Tell PHP/CURL where to write cookies
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); // Tell PHP/CURL which cookies to send
$page = curl_exec($ch);

if(curl_exec($ch) === false)
{
    echo 'Curl error: ' . curl_error($ch);
}
else
{
    echo '';
}

// Check if any error occurred
if(curl_errno($ch))
{
    echo 'Curl error: ' . curl_error($ch);
}

1 个答案:

答案 0 :(得分:0)

效果非常好。但是,HTTP嗅探器(尤其是Fiddler)似乎无法解密cURL流量。为了测试我的回答,我打印了$ page,我得到了我期望的页面。