Ber*_*eck 12 google-chrome google-chrome-extension
我正在尝试阻止Chrome应用中的某些请求.
我创建了一个执行此验证的JavaScript侦听器:
chrome.webRequest.onBeforeRequest.addListener(
{
urls: ["*://site.com/test/*"]
},
["blocking"]
);
Run Code Online (Sandbox Code Playgroud)
但请求并未阻止.我在这段代码中遗漏了什么吗?
我的清单:
"background": {
"scripts": ["listener.js"],
"persistent": true
},
"permissions": ["tabs", "http://*/*"],
"manifest_version": 2,
Run Code Online (Sandbox Code Playgroud)
方 觉*_*方 觉 21
看起来你在这里误解了"阻塞"的含义.
https://developer.chrome.com/extensions/webRequest.html#subscription
如果可选的opt_extraInfoSpec数组包含字符串'blocking'(仅允许特定事件),则同步处理回调函数.这意味着请求被阻止,直到回调函数返回.在这种情况下,回调可以返回一个BlockingResponse,它确定请求的进一步生命周期.
要阻止请求(取消它),请{cancel: true}在事件处理程序中返回.
例如:
chrome.webRequest.onBeforeRequest.addListener(
function() {
return {cancel: true};
},
{
urls: ["*://site.com/test/*"]
},
["blocking"]
);
Run Code Online (Sandbox Code Playgroud)
这将阻止所有匹配的URL *://site.com/test/*.
还要记住在清单中声明两者webRequest和webRequestBlocking权限.
在Chrome 59中,您可以阻止开发人员工具本身的"网络"标签中的特定请求.
https://developers.google.com/web/updates/2017/04/devtools-release-notes#block-requests
在"网络"面板中右键单击该请求,然后选择"阻止请求URL".Drawer中会弹出一个新的"请求阻止"选项卡,您可以使用该选项卡管理阻止的请求.