Blocking request in Chrome
Asked Answered
F

2

15

I'm trying to block some requests in a Chrome app.

I created a JavaScript listener that does this validation:

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

But the requests are not blocking. Did I miss something in this code?

My manifest:

"background": {
        "scripts": ["listener.js"],
        "persistent": true
    },
"permissions": ["tabs", "http://*/*"],
    "manifest_version": 2,
Fjeld answered 10/8, 2013 at 3:8 Comment(3)
If you had opened the console for the background page, you would see the error messages about incorrect permissions. After fixing the permissions, you would see another error message that points out that the format of your webRequest API call is invalid.Swearingen
Using this link: blocking requests in google chrome with pattern matchingCalida
Please look at my answer here https://mcmap.net/q/822551/-request-blocking-using-javascriptCity
M
23

It looks like you misunderstood the meaning of "blocking" here.

https://developer.chrome.com/extensions/webRequest.html#subscription

If the optional opt_extraInfoSpec array contains the string 'blocking' (only allowed for specific events), the callback function is handled synchronously. That means that the request is blocked until the callback function returns. In this case, the callback can return a BlockingResponse that determines the further life cycle of the request.

To block a request (cancel it), return {cancel: true} in your event handler.

For example:

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

This will block all URLs matching *://site.com/test/*.

Also remember to declare both webRequest and webRequestBlocking permissions in your manifest.

Mikimikihisa answered 10/8, 2013 at 3:38 Comment(0)
Y
12

From Chrome 59 you can block specific requests from Network tab of developer tools itself.

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

Right-click on the request in the Network panel and select Block Request URL. A new Request blocking tab pops up in the Drawer, which lets you manage blocked requests.

Sample

Yelp answered 11/7, 2017 at 11:28 Comment(1)
does not work for websocket. I.e. this does not work github.com/facebook/create-react-app/issues/…Spiritoso

© 2022 - 2024 — McMap. All rights reserved.