我试图理解同源策略(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);
});
});
答案 0 :(得分:3)
我认为这里的不一致是由于第一个资源有一个Access-Control-Allow-Origin: *
标头,所以它支持CORS并允许所有域的脚本使用AJAX和{{{{{}访问数据。 3}}
相比之下,google.com
没有,因此尝试从其他域访问它会给您带来通常的错误。
将该标题添加到任何页面将绕过同源策略。您也可以Access-Control-Allow-Origin: domain
仅允许来自域domain
的请求。
有关CORS支持的更多信息,请查看XMLHttpRequests。