我正在尝试开发扩展程序,以便我可以监控所有下载的总进度。我想获得所有当前正在下载的项目的总百分比,并执行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
权限,但我希望允许最终用户使用选项页面指定其终端网址:
这不是我真正需要的。我只需要对特定网址执行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://*/"
添加到权限中,因为我不会对所有可能的地址发出请求,只是单个地址,我想允许用户进行设置和更改如果需要的话。