【问题标题】:CORS HTTP to HTTPSCORS HTTP 到 HTTPS
【发布时间】:2020-12-02 03:05:46
【问题描述】:

我对其他网站的 AJAX 请求有疑问。 当我调用 Http 到 Http 时没有问题。但是当我从 HTTP 调用到 HTTPS 时,我会收到如下错误消息:

从“https://www.mywebsideserver.pl/test.php”访问 XMLHttpRequest 来源“http://mywebsideclient.com”已被 CORS 策略阻止:否 请求中存在“Access-Control-Allow-Origin”标头 资源。 kclientcors.php:77 jquery.min.js:2 POST https://www.mywebsideserver.pl/test.phpnet::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, textStatus, errorThrown) {
            console.log(errorThrown);
          }
        });
    }   
</script>

和服务器端的简单代码:

<?php
header('Access-Control-Allow-Origin: *');
$myArr = array("xx1", "xx2", "xx3", "xx4");

$myJSON = json_encode($myArr);


echo $myJSON;
?>

需要在 htaccess ,客户端代码还是服务器端代码中添加一些东西?

【问题讨论】:

标签: php ajax https http-headers cors


【解决方案1】:

解决此问题的一种方法是在发出 Ajax 请求之前决定使用什么协议(取决于当前协议)。例如,如果用户将访问https://www.mywebsideserver.pl,那么您的 ajax url 应该是

https://www.mywebsideserver.pl/test.php

如果用户访问http://www.mywebsideserver.pl,那么ajax url应该是

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',

【讨论】:

    【解决方案2】:

    是的,这就是使用 CORS 的原因,对安全网站的 API 请求只能由另一个安全网站完成。因此,使用该网站的 HTTP 无法向 HTTPS 网站发送请求。你可以阅读更多关于它的信息here。 HTTPS 网站可以例外,通过在他们的网站上添加“Access-Control-Allow-Origin”标头说
    “嘿,这个 HTTP 网站可以访问我的 HTTPS 网站,因为我是他的朋友,我会做这个例外”。阅读更多关于它的信息here

    【讨论】:

      猜你喜欢
      • 2016-09-01
      • 2014-05-02
      • 2019-07-21
      • 2018-10-12
      • 2013-02-12
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 2019-01-05
      相关资源
      最近更新 更多