小编典典

chrome扩展中的跨域XMLHttpRequest

ajax

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

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

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

XMLHttpRequest无法加载http://www.google.com/search?hl=zh_CN&q=ajax。Access-
Control-Allow-Origin不允许使用来源chrome-extension://
bmehmboknpnjgjbmiaoidkkjfcgiimbo。

我不仅允许对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();
}

阅读 488

收藏
2020-07-26

共1个答案

小编典典

两件事情;
您需要确保自己制作的是打包的应用程序/扩展名,而不是托管的。跨源请求不适用于托管应用。假设您固定了该部分,则可能要尝试将以下内容放入您的权限中:http://*/。这是我打包的应用程序中唯一的一个,它确实可以跨源运行,没有任何问题。

2020-07-26