在Chrome扩展中的跨源XMLHttpRequest

根据chrome扩展API如果设置了权限,则应该允许使用XMLHttpRequest对象进行跨源调用:

一个扩展可以与远程服务器通信,只要它首先请求跨源许可。

我正在密切关注该教程,但下面的代码给了我一个错误消息:

XMLHttpRequest无法加载http://www.google.com/search?hl=zh-CN&q=ajax 。 Origin chrome-extension:// bmehmboknpnjgjbmiaoidkkjfcgiimbo不被Access-Control-Allow-Origin允许。

我不仅允许向google.com发送请求,而且还向任何网站发送请求,但仍然无法通过。 任何人都可以帮忙吗?

我的清单文件:

{ "name": "The popup", "version": "0.1", "popup": "popup.html", "permissions": [ "http://*/*", "https://*/*", "https://www.google.com/*", "http://www.google.com/*" ], "browser_action": { "default_icon": "clock-19.png", "default_title": "This is title", "default_popup": "popup.html" } } 

实际的通话:

 function sendRequest() { document.write("Sending request"); var req = new XMLHttpRequest(); req.open("GET", "http://www.google.com/search?hl=en&q=ajax", true); req.onreadystatechange = function() { if (req.readyState == 4) { if (req.status == 200) { alert(req.responseText); document.write("OK"); } } }; req.send(); } 

两件事情; 你需要确保你正在打包应用程序/扩展,而不是托pipe的。 跨源请求不适用于托pipe的应用程序。 假设您已将该部分固定下来,则可能需要尝试将以下内容放入您的权限中: http://*/ 。 这是我打包的应用程序中唯一的一个,它确实跨越了原始的东西没有任何问题。