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

标签 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);
    });
});

最佳答案

我认为这里的不一致是因为第一个资源有一个 Access-Control-Allow-Origin: * header ,所以它支持 CORS并允许来自所有域的脚本使用 AJAX 和 XMLHttpRequests 访问数据.

相比之下,google.com 没有,因此尝试从另一个域访问它会出现常见的错误。

将该 header 添加到任何页面都将规避同源策略。您还可以执行 Access-Control-Allow-Origin: domain 以仅允许来自域 domain 的请求。

看看this有关 CORS 支持的更多信息。

关于javascript - 使用 jQuery AJAX API 的同源策略看似不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25336588/

相关文章:

javascript - 如何从 javascript 调用 Google Tasks API?

javascript - 单击选项卡时如何阻止页面重新加载? (jQuery)

ajax - 由于 Ajax,Tomcat session 空闲不工作

javascript - 在 Rails 中使用 Ajax 进行投票

mysql - 使用 AJAX 向服务器发送数据

javascript - PHP网络爬虫点击

javascript - 为什么 Object.create 不为我创建新列表?

javascript - 吞下 jQuery AJAX 回调中抛出的异常?

javascript - 使用纯 json 输入时通过数据表获取 rowid 值

javascript - 非常非常简单的qtip实现