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/*

webRequestまた、マニフェストでとwebRequestBlockingパーミッションの両方を宣言することを忘れないでください。

于 2013-08-10T03:38:55.547 に答える