Php CORS:从非ssl站点访问ssl端点

Php CORS:从非ssl站点访问ssl端点,php,jquery,ajax,ssl,Php,Jquery,Ajax,Ssl,我正在尝试从http://站点访问我的API端点(https) 在我的PHP应用程序中,我将标题设置为 header('Access-Control-Allow-Origin: *'); 响应包含它。但是,如果尝试通过AJAX调用端点,则会出现以下错误: ERR_SSL_PROTOCOL_ERROR 证书似乎是有效的。我可以禁用检查吗? 从非SSL站点访问SSL内容应该是安全的。正确吗?正确的解决方案是解决您的证书问题,但如果不可行,则可以使用HTTP服务器作为代理,通过PHP的cURL获取

我正在尝试从http://站点访问我的API端点(https)

在我的PHP应用程序中,我将标题设置为

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调用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;
}
<?php
// some database stuff returning JSON or whatever
echo json_encode($db_rows);

证书不太安全时出错。

该错误仅在google chrome中出现。

您使用的是什么web浏览器?您的网站在HTTPS上的配置是否安全?如果您访问浏览器中的URL,是否会收到相同的消息?你可以检查一下我用的是谷歌浏览器。在浏览器中访问时,我没有收到任何错误。域的报告显示了黄色的B。(B表示更好,我希望没有;-)所以你的问题似乎是Chrome不喜欢你的SSL。我想看看您是否将AJAX设置为使用JSONP?它似乎在firefox中工作。所以我认为你的证书猜对了。