如何解决将CORS HTTP转换为HTTPS
我对其他网站的AJAX请求有问题。 当我将Http调用到Http时没有问题。但是,当我从HTTP呼叫到HTTPS时,出现如下错误消息:
从“ https://www.mywebsideserver.pl/test.php”访问XMLHttpRequest 来源“ http://mywebsideclient.com”已被CORS政策阻止:否 请求中出现“ Access-Control-Allow-Origin”标头 资源。 klientcors.php:77 jquery.min.js:2 POST https://www.mywebsideserver.pl/test.php净:: ERR_FAILED
这些是客户端标头。
这是我的客户端代码:
<script type="text/javascript">
testCORS();
function testCORS() {
$.ajax({
url: 'https://www.mywebsideserver.pl/test.php',type: 'POST',//dataType: 'html',data:{},crossDomain: true,success: function (data,textStatus,xhr) {
alert(data);
},error: function (xhr,errorThrown) {
console.log(errorThrown);
}
});
}
</script>
和服务器端简单代码:
<?php
header('Access-Control-Allow-Origin: *');
$myArr = array("xx1","xx2","xx3","xx4");
$myJSON = json_encode($myArr);
echo $myJSON;
?>
需要在htaccess,客户端代码或服务器端代码中添加一些内容吗?
解决方法
解决这个问题的一种方法是在发出Ajax请求之前决定使用哪种协议(取决于当前协议)。例如,如果用户将访问https://www.mywebsideserver.pl,则您的ajax网址应为
https://www.mywebsideserver.pl/test.php
如果用户访问http://www.mywebsideserver.pl,则ajax网址应为
http://www.mywebsideserver.pl/test.php
您可以这样更改代码:
$is_https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443;
$protocol = $is_https ? 'https' : 'http';
现在,您可以使用$protocol
变量来构建您的网址,如下所示:
<script type="text/javascript">
testCORS();
function testCORS() {
$.ajax({
url: '<?php echo $protocol ?>://www.mywebsideserver.pl/test.php',
,
是的,这就是使用CORS的原因,对安全网站的API请求只能由另一个安全网站完成。因此,使用该网站的HTTP无法将请求发送到HTTPS网站。您可以详细了解here。 HTTPS网站可以对此例外,方法是在其网站上添加“ Access-Control-Allow-Origin”标头,说
“嘿,由于我是他的朋友,所以该HTTP网站可以访问我的HTTPS网站,将例外”。进一步了解here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。