如何在Chrome v3中处理onBeforeSendHeaders

mdfafbf1  于 2023-01-10  发布在  Go
关注(0)|答案(1)|浏览(387)

我有一些已发布的Chrome扩展。我正试图将它从mv2移动到mv3格式。在background.js中,我用下面的代码截取标题。

chrome.webRequest.onBeforeSendHeaders.addListener(
    onBeforeSendHeadersHandler, {
    urls: <url list obtained using websocket from machine>,
    types: ['main_frame']
    },
    ['blocking', 'requestHeaders']
);

var onBeforeSendHeadersHandler = function(details) {
   if (details.requestHeaders[idx].name === 'Purpose' &&details.requestHeaders[idx].name === 'prefetch') {
      return {};
   }
   var condition = <some code>;
   chrome.tabs.update(params);
   return {cancel: condition ? true : false };
}

基于“details”中的输入,onBeforeSendHeadersHandler将运行一些逻辑并返回true或false。这将决定扩展是否将处理该URL。
使用v3如何在运行时拦截头文件并返回一些值。我尝试了manifest.json中的“declarative_net_request”和updateDynamicRules,但都不起作用。但即使我可以修复这个问题,我的问题是如何定义一些要在onBeforeSendHeadersHandler()中执行的函数(),因为我无法在rules.json文件中写入所有条件或动态更新它。
V3已经取消了“阻塞”调用,这是我的要求必须要做的,有没有替代方案?

68bkxrlz

68bkxrlz1#

可以使用declarativeNetRequest权限来阻止请求

chrome.declarativeNetRequest.updateDynamicRules({
    addRules:[{
    "id":1,
    "action": { "type": "block" },
    "condition": {
        "urlFilter": 'url-part',
        "resourceTypes": [
            "main_frame",
            "sub_frame"
        ]
    }
    }],
    removeRuleIds: [1]
});

相关问题