14

我试图阻止 Chrome 应用程序中的一些请求。

我创建了一个执行此验证的 JavaScript 侦听器:

chrome.webRequest.onBeforeRequest.addListener(
    {
        urls: ["*://site.com/test/*"]
    },
    ["blocking"]
);

但是请求并没有阻塞。我错过了这段代码中的某些内容吗?

我的清单:

"background": {
        "scripts": ["listener.js"],
        "persistent": true
    },
"permissions": ["tabs", "http://*/*"],
    "manifest_version": 2,
4

2 回答 2

23

看来您在这里误解了“阻止”的含义。

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"]
);

这将阻止所有匹配的 URL *://site.com/test/*

还要记住在清单中声明webRequestwebRequestBlocking权限。

于 2013-08-10T03:38:55.547 回答
10

Chrome 59中,您可以阻止来自开发者工具本身的网络选项卡的特定请求。

https://developers.google.com/web/updates/2017/04/devtools-release-notes#block-requests

右键单击网络面板中的请求并选择阻止请求 URL。抽屉中会弹出一个新的请求阻止选项卡,可让您管理被阻止的请求。

样本

于 2017-07-11T11:28:41.390 回答