【问题标题】:Can't get data from database trough ajax call "No 'Access-Control-Allow-Origin' "无法通过 ajax 调用“No 'Access-Control-Allow-Origin'”从数据库中获取数据
【发布时间】:2014-01-07 03:29:39
【问题描述】:

我正在尝试进行 ajax GET 调用以从我的数据库中获取一些信息。离线(通过本地主机)一切正常。在线我一遍又一遍地得到同样的错误:

“请求的资源上不存在‘Access-Control-Allow-Origin’标头。” 正如您在以下链接中看到的那样:http://d.pr/i/pHR4

javascript代码:

    function loadnewsong(){

    var url = "http://www.sonder.be/?nextsong=true&id=" + $('#musicid').text();

    $.ajax({
        type:"GET",
        url: url,
        dataType:"json",
        success: function(data){
            console.log(data);

            $('#title').fadeOut(function(){

            $('#title').text(data[0].title);
                $('#title').fadeIn();
            });

            $('#musicid').text(data[0].id);

            audio.pause();
            $('#srcmp3').attr('src',"assets/media/" + data[0].mp3);
            $('#srcogg').attr('src',"assets/media/" + data[0].ogg);
            audio.load();
            audio.play();

            url = "http://www.sonder.be/?nextsong=true&id=" + $('#musicid').text();

        }
    });
}

我可能做错了什么?

【问题讨论】:

  • Same origin policy 阻止您从外部域获取数据。
  • @adeneo 这是同一个域 www.sonder.be
  • 但是 sonder.be 和 www.sonder.be ,所以不同的域,它是不同的子域
  • 同一个域,不同的主机名。同源策略需要匹配的主机名(以及端口和方案)。
  • @web2students.com 是的,没错,它们不是外部域,只是不同的子域?

标签: javascript php jquery ajax


【解决方案1】:

sonder.be 要求浏览器从www.sonder.be 获取数据,而www.sonder.be 没有授予它与sonder.be 共享该数据的权限。

由于这些可能是指向同一个站点的不同主机名,因此您必须采用简单的方法来解决此问题:

  1. 从两个主机名中选择一个作为规范主机名,然后将另一个主机名的所有资源 301 重定向到它。
  2. 使用相对 URI。

进一步阅读:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2021-11-29
    • 2023-01-12
    • 2014-04-25
    • 2019-03-18
    • 2022-09-27
    • 2021-02-02
    相关资源
    最近更新 更多