我真的很困惑。我的公司最近将此网址更改为http s ,我无法再对其发出cURL请求。公司里没有其他人做PHP,所以没有人帮我调试。
我对https没有多少经验,所以我在这里阅读了一些帖子,发现了一些解决同一问题的帖子,即这一个:
Can't connect to HTTPS site using cURL. Returns 0 length content instead. What can I do?
起初,我收到了与安全证书相关的各种错误,但在将curl.cainfo="c:\xampp\htdocs\login\cacert.pem"
添加到我的php.ini
文件后,我相信我已经解决了这些问题,因为我没有收到错误,但我仍未获得成功的登录回复。
作为流程的一部分,我需要将cookie传递给服务器, 存在。 echo $strCookie
会返回正确的Cookie数据,因此我不会认为它是。
$searchURL = "https://url.com/valid?";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $searchURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$strCookie = 'testcookie=' . $_COOKIE['testcookie'] . '; path=/';
curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );
curl_setopt($ch, CURLOPT_CAPATH, "\cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
if($answer = curl_exec($ch))
{
echo "<pre>";
print_r($answer);
echo "</pre>";
}
else
{
echo "<pre>";
echo 'Curl error: ' . curl_error($ch);
echo "</pre>";
}
如果我将网址放入我的浏览器(url.com/valid?
),我会回来boolean = true
,因此我知道我已登录。但是,此脚本正在返回boolean = false
而我不能找出原因。
以下是标题:
TTP/1.1 200 OK
Date: Mon, 09 Nov 2015 21:33:16 GMT
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Pragma: no-cache
Content-Length: 14
Content-Type: text/plain; charset=UTF-8
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: amlbcookie=01; domain=.****.com; path=/
Vary: User-Agent,Accept-Encoding
我对Set-Cookie: amlbcookie=01
行感到困惑,因为我不确定该Cookie是什么。它与我从echo $strCookie
获得的输出不匹配。