Cross-Origin XHR在Chrome扩展程序中失败

时间:2014-04-24 13:28:44

标签: javascript jquery ajax google-chrome google-chrome-extension

我正在弹出页面中进行跨源XHR,如下所示:

// popup.js
var some_url="http://****";
$.get(some_url, function(){
    // do something here
}).error(function(){});

这是我的清单中的权限:(我写了"< all_urls>",但在发布到Chrome网上应用店后,它会跟随)

"permissions": [ "\u003Call_urls>" ]

问题在于,有时XHR工作正常,但有时(例如重新启动浏览器,切换到另一台计算机)我收到以下错误:

XMLHttpRequest cannot load http://****. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'chrome-extension://****' is therefore not allowed access. 

顺便说一句,当我在开发者模式下使用解压缩版本时,XHR似乎总能正常工作。

2 个答案:

答案 0 :(得分:0)

您不能发出跨域请求,直到您请求的其他服务器允许您为止。

作为对您的请求的回复,服务器将发送允许的收件人列表'。如果它允许您进入列表,那么浏览器将显示响应,否则将显示您将收到的错误。

在开发模式下,它的工作原理可能是因为服务器允许每个处于开发模式的人进行测试。

答案 1 :(得分:0)

如果它有时有效,但有时却没有更改任何代码,那么它可能是Chrome的一个错误。您可以在crbug.com/new提交错误报告。