同源策略使用jQuery AJAX API看似不一致

时间:2014-08-16 03:13:28

标签: javascript jquery ajax same-origin-policy

我试图理解同源策略(SOP)在不同情况下的应用。

我在本地HTML文件中编写了以下JavaScript代码,并在Windows上使用Chrome运行:

$(document).ready(function () {
    $.get("http://www.quandl.com/api/v1/datasets/FRED/GDP.json", function (r) {
        window.alert(r.source_name);
    });
});

它通过向我提供从另一个域(www.quandl.com)检索的数据来工作。但是,如果我将其与google.com交换,则不会调用回调:

$(document).ready(function () {
    $.get("http://www.google.com", function (r) {
        window.alert(r);
    });
});

1 个答案:

答案 0 :(得分:3)

我认为这里的不一致是由于第一个资源有一个Access-Control-Allow-Origin: *标头,所以它支持CORS并允许所有域的脚本使用AJAX和{{{{{}访问数据。 3}}

相比之下,google.com没有,因此尝试从其他域访问它会给您带来通常的错误。

将该标题添加到任何页面将绕过同源策略。您也可以Access-Control-Allow-Origin: domain仅允许来自域domain的请求。

有关CORS支持的更多信息,请查看XMLHttpRequests