我在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 -验证对等体的SSL证书
和
CURLOPT_SSL_VERIFYHOST -根据主机验证证书的名称
它们在Curl中都默认为true
,除非您有很好的理由,否则不应该禁用它们。通常只有当您向具有无效或自签名证书的服务器发送请求时才需要禁用它们,这通常是开发中的问题。任何面向公众的站点都应该提供有效的证书,禁用这些选项可能会使您面临安全问题。