当我本地运行以下cURL调用时,我得到了预期的结果。
curl -X POST -H "Accept:application/json" -H "Content-Type: application/x-www-form-urlencoded" "https://XXXX" -d 'grant_type=authorization_code&code=YYYY
当我通过PHP运行cURL调用时,我得到了不同的响应。
$curl = curl_init('https://XXXX');
curl_setopt_array($curl, array(
CURLOPT_HTTPHEADER => array(
'Accept: application/json',
'Content-type: application/x-www-form-urlencoded'
),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'grant_type' => 'authorization_code',
'code' => 'YYYY'
),
));
$response = curl_exec($curl);
curl_close($curl);
本机调用和PHP方法之间是否存在功能差异?感谢。
答案 0 :(得分:2)
问题是PHP的cURL不信任服务器的HTTPS证书。默认情况下,命令行curl
不同。
快速解决方法是将cURL配置为始终信任服务器:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
此处描述了正确的修复
http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/