仅请求XHR的其他权限,而不是浏览历史记录

时间:2017-06-29 11:53:54

标签: google-chrome-extension

我正在尝试开发扩展程序,以便我可以监控所有下载的总进度。我想获得所有当前正在下载的项目的总百分比,并执行XHR请求来报告我的进度。

我遇到了发出XHR请求所需的权限问题。

我的manifest.json:

{"name": "__MSG_extName__",
 "version": "0.3",
 "manifest_version": 2,
 "description": "__MSG_extDesc__",
 "icons": {"128": "icon128.png"},
 "browser_action": {
   "default_icon": {
     "19": "icon19.png",
     "38": "icon38.png"},
   "default_title": "__MSG_extName__",
   "default_popup": "popup.html"
  },
  "options_ui": {
    "page": "options.html",
    "chrome_style": true
  },
 "background": {"persistent": false, "scripts": ["background.js"]},
 "default_locale": "en",
 "optional_permissions": ["http://*/", "https://*/", "tabs"],
 "permissions": ["downloads"]
 }

正如您最初看到的那样,我只请求downloads权限,但我希望允许最终用户使用选项页面指定其终端网址:

enter image description here

不幸的是,在请求权限时,我得到了这个问题: enter image description here

这不是我真正需要的。我只需要对特定网址执行XHR请求的权限,我不需要Read your browsing history权限。

以下是我要求权限的方式:

var getLocation = function(href) {
    var l = document.createElement("a");
    l.href = href;
    return l;
};
var url = document.getElementById("url").value;
var l = getLocation(url);
var newUrl = l.protocol+'//'+l.hostname+'/';
chrome.permissions.request({
    permissions: ['tabs'],
    origins: [newUrl]
    }, function(granted) {
    if (granted) {
      console.log('OK');
    } else {
      console.log('NIE');
    }
});

我想我无法将Read and change your data on 192.168.10.101的第一次许可更改为Make requests to 192.168.10.101,但是我可以取消第二次许可吗?

我已尝试将我的请求代码更改为:

chrome.permissions.request({
    permissions: [newUrl],
    origins: [newUrl]
    }, function(granted) {
    if (granted) {
      console.log('OK');
    } else {
      console.log('NIE');
    }
});

但我得到了这个例外:

  

运行permissions.request时未经检查的runtime.lastError:   ' http://www.example.com'不是公认的许可。

我不想将"http://*/"添加到权限中,因为我不会对所有可能的地址发出请求,只是单个地址,我想允许用户进行设置和更改如果需要的话。

0 个答案:

没有答案