【发布时间】:2014-10-09 18:56:47
【问题描述】:
我试图了解同源政策 (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);
});
});
【问题讨论】:
-
我不确定为什么第一个有效,但我相信第二个的问题是谷歌默认使用 HTTPS。试试 cnn.com 什么的。
-
因为第一个资源支持 CORS 而第二个不支持
-
查看第一个请求的响应标头,您可以找到一些标头,例如
Access-Control-Allow-* -
维基百科有一个很好的总结:en.wikipedia.org/wiki/Same-origin_policy
标签: javascript jquery ajax same-origin-policy