Chrome扩展程序:您无权使用阻止的webRequest侦听程序

时间:2012-11-20 21:31:13

标签: google-chrome-extension

我正在撰写扩展程序并在我的后台页面中进行此调用:

chrome.webRequest.onBeforeRequest.addListener(function(details) {console.log(details)}, {urls: ["<all_urls>"]}, ["blocking"]);

然而,无论何时运行它,我都会在后台页面的开发工具中收到此错误:

Error during webRequestInternal.addEventListener: You do not have permission to use blocking webRequest listeners. Be sure to declare the webRequestBlocking permission in your manifest. 

即使我的清单中的权限看起来如此:

"permissions": [
        "cookies",
        "http://*/*",
        "https://*/*",
        "tabs",
        "history",
        "webRequest",
        "webRequestBlocking"
    ]

这到底是怎么回事?这是网络请求文档http://developer.chrome.com/stable/extensions/webRequest.html

2 个答案:

答案 0 :(得分:2)

使用以下代码对我有用,为什么要在特定的后台页面中执行此操作?

屏幕截图

enter image description here

<强>的manifest.json

{
"name":"My First App",
"description":"This is First App",
"version":"1",
"manifest_version":2,
"permissions": [
        "cookies",
        "http://*/*",
        "https://*/*",
        "tabs",
        "history",
        "webRequest",
        "webRequestBlocking"
    ],
"icons":{"16":"icon.jpg"},
"background":{
    "scripts": ["background.js"]
},
"browser_action":{
    "default_popup":"popup.html",
    "default_icon":"icon.jpg"
}
}

<强> popup.html

<html>
<head>
<script src="popup.js"></script>
</head>
<body>
</body>
</html>

<强> popup.js

chrome.webRequest.onBeforeRequest.addListener(function(details) {
console.log(details);
}, {urls: ["<all_urls>"]}, ["blocking"]);

<强> Background.js

function doNothing(){
}

答案 1 :(得分:1)

在撰写我的第一个Chrome扩展程序时,我遇到了类似的问题: 我的解决方案是删除扩展程序,修复 manifest.json 再次添加扩展程序。只是停用它并重新激活它将无法解决问题。

我将扩展程序加载到Chrome中并开始调试。当我在代码中发现错误时,停用扩展程序,再次修复已激活扩展程序的错误。这很好地修复了代码错误。但是当我尝试以阻塞方式使用webrequest模块时,我总是在webRequestInternal.addEventListener中遇到“错误:您没有使用阻止webRequest侦听器的权限。请确保在清单中声明webRequestBlocking权限。” EM>”。无论我怎么改变了manifest.json。