我在 PHP 中使用 curl 来请求一些 https 站点,例如 https://github.com
,我只使用如下代码:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://github.com/search?q=react");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
echo $output;
curl_close($ch);
?>
然后,我就可以获取页面了。
但是,我之前搜索了一下,发现如果请求一个https资源,需要添加这些代码:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
那为什么不用这两行代码就可以请求https资源来避开SSL检查呢?
谢谢。
最佳答案
两个 Curl 选项定义为:
CURLOPT_SSL_VERIFYPEER - verify the peer's SSL certificate
和
CURLOPT_SSL_VERIFYHOST - verify the certificate's name against host
它们在 Curl 中都默认为 true
,除非您有充分的理由,否则不应将其禁用。通常仅当您向具有无效证书或自签名证书的服务器发送请求时才需要禁用它们,这通常只是开发中的一个问题。任何面向公众的站点都应出示有效证书,如果禁用这些选项,您可能会面临安全问题。
关于php - 为什么在使用 PHP cURL 时不需要避免 SSL 检查但可以请求 HTTPS 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38824842/