Google chrome extension chrome扩展可以从中获取数据http://www.foo.com/api 但不是http://www.foo.com/api/data.xml

Google chrome extension chrome扩展可以从中获取数据http://www.foo.com/api 但不是http://www.foo.com/api/data.xml,google-chrome-extension,Google Chrome Extension,我正在编写一个扩展,它从服务器请求XML内容,并在弹出/对话框窗口中显示数据。我已将网站添加到manifest.json权限中,如下所示: "permissions": [ "http://*/*" ], 后来,我在我的背景页面中添加了以下代码: function loadData() { var url = "http://www.foo.com/api/data.xml"; var xhr = new XMLHttpRequest(); xhr.open('GET', url, t

我正在编写一个扩展,它从服务器请求XML内容,并在弹出/对话框窗口中显示数据。我已将网站添加到manifest.json权限中,如下所示:

"permissions": [
    "http://*/*"
],
后来,我在我的背景页面中添加了以下代码:

function loadData() {
var url = "http://www.foo.com/api/data.xml";
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
...
xhr.send();
问题是,我得到了跨站点安全错误“Origin chrome”-extension://kafkefhcbdbpdlajophblggbkjloppll 访问控制允许源不允许。”

问题是,我可以请求“”的权限中有“http://”,但我找不到任何允许“”的方法。 我两个都试过了”http:////*“权限”中的“和”。我还应该做什么?

这应该可以工作(SOP不适用于chrome扩展),因此有三种可能性:

某个地方出错了

只是为了确保对chrome使用add
,因为我是其中一名开发人员)。如果它显示相同的错误,则意味着服务器确实在检查源标题

要解决此问题,您必须使服务器以某种方式接受您的源代码,或者您可以使用设置有效的源代码头,以将所有请求发送到目标服务器(标准XHR api不允许修改源代码头)

Chrome bug


在这种情况下,您只能执行此错误并等待最佳结果

显然,这是一种告诉您,由于foo.com端的安全策略,您尝试访问的资源在JS中不可用的方法。有关更多详细信息,请参阅。我感谢您的输入,但我在没有特殊po的服务器上使用普通XML文件也尝试了同样的方法您的文件没有
访问控制允许来源:
,因此您无法访问它。尝试将该响应头添加到您的HTTP响应中。这似乎允许我发出请求并检索数据。但这对我来说是个坏消息,因为我无法控制我试图从中获取数据的实际服务器。因此,如果没有解决办法,这对我来说是一条死胡同。你想以“回答”而不是“评论”的形式提交信息,以便我可以接受吗?