【问题标题】:Access allow control origin fails with www prefix访问允许控制来源失败并带有 www 前缀
【发布时间】:2016-02-02 20:00:38
【问题描述】:

我的页面上有一个 jquery 加载函数,当单击按钮时会触发该函数。该网址以http://domain.com/ 开头... 当我通过转到http://www(dot)domain(dot)com/ 浏览页面时,这已经够奇怪了... 在控制台中显示访问允许控制来源错误。但是当我转到普通的 http://domain(dot)com/... 时,当我按下按钮并加载新内容时一切正常。

  var loadingOverlay = $('#loadingOverlay');

$(".newsItemTitle").click(function () {
    loadingOverlay.show();
    var $target = $(this);
    $url = "include/getFunction.php?json=1&param=" + $(this).data("id") + "&function=getMainPageContent";
    $.ajax({
        url: $url,
        success: function (html) {
            $(".newsItemTitle").each(function () {
                $(this).removeClass("active");
            });

            $target.addClass("active");
            var text = $.parseJSON(html)['text'];

            $(".js-content").empty().append(text);
            window.setTimeout(function () {
                loadingOverlay.hide();

                $('html, body').animate({
                    scrollTop: $('.js-content-title').offset().top - 80
                }, 'slow');
            }, 500);
        }
    });
});

有谁知道我该如何解决这个问题?

【问题讨论】:

  • 也许可以分享一点你的代码?
  • 您是否尝试将绝对路径添加到您的 $url 变量(而不是相对路径)?

标签: javascript jquery


【解决方案1】:

这是意料之中的。 http://www.example.comhttp://example.com 是不同的来源。

有几种方法可以解决此问题。

  1. 不要在两个不同的主机名上托管您的网站。选择两个中的一个作为规范并从另一个重定向到它。
  2. 始终使用相对 URL,以便您将 Ajax 请求发送到同一来源
  3. 将服务器配置为发送 Access-Control-Allow-Origin 标头,以便两个来源可以共享内容

【讨论】:

    【解决方案2】:

    这种错误发生在跨对象资源共享中。在启用了 CORS 的服务器上,服务器将识别哪些域名有权使用 AJAX 连接访问数据,并且 javascript 安全模型将子域视为 CORS 下的不同站点。我会检查以确保 CORS 尚未设置为仅支持 domain.com,如果它也添加 www.domain.com 作为授权。如果您使用支持 CORS 的网络托管服务商,您的托管服务提供商可能会提供帮助。

    【讨论】:

      猜你喜欢
      • 2021-07-27
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 2017-07-21
      • 2018-02-14
      相关资源
      最近更新 更多