我正在尝试从 http://站点访问我的 API 端点 (https)。
在我的 PHP 应用程序中,我将 header 设置为
header('Access-Control-Allow-Origin: *');
响应包含它。然而,如果我尝试通过 AJAX 调用端点,则会发生以下错误:
ERR_SSL_PROTOCOL_ERROR
证书似乎是有效的。我可以以某种方式禁用检查吗? 从非 SSL 站点访问 SSL 内容应该是安全的。正确吗?
最佳答案
正确的解决方案是解决您的证书问题,但如果这不可行,那么您可以使用 HTTP 服务器作为代理通过 PHP 的 cURL 获取 HTTPS 数据:
HTTP AJAX 调用
$.ajax({
url: 'http://www.example.com/call_api.php',
success: function(data){
console.log(data);
}
});
HTTP call_api.php
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // return response as a string
curl_setopt($ch, CURLOPT_URL, 'https://www.example2.com/api_file.php');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$result = curl_exec($ch);
if(curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200)
{
echo $result;
}
HTTPS api_file.php
<?php
// some database stuff returning JSON or whatever
echo json_encode($db_rows);
关于php - CORS : Accessing ssl endpoint from non ssl site,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35941291/