You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firefox下Manifest V3扩展webRequest API无法触发onBeforeRequest回调问题

解决Firefox Manifest V3下webRequest API onBeforeRequest不触发的问题

针对你遇到的Firefox MV3环境下webRequest事件无响应的问题,核心原因是Firefox对Manifest V3的实现细节与Chrome存在差异,以下是具体修正方案:

1. 修正Manifest V3的Background配置

Firefox严格遵循MV3标准,必须使用service_worker字段定义背景脚本,而非V2中的scripts。同时Service Worker的模块类型配置需对应调整:

修正后的manifest.json:

{
    "manifest_version": 3,
    "name": "fun",
    "version": "4.0.0",
    "background": {
        "service_worker": "background.js",
        "type": "module"
    },
    "permissions": [
        "webRequest"
    ],
    "host_permissions": ["<all_urls>"]
}

2. 确认Firefox版本兼容性

Firefox对Manifest V3的完整支持从版本115开始,若使用109-114的Beta/Dev版本,可能存在webRequest API的实现缺陷,建议升级至最新稳定版。

3. 验证监听配置与运行状态

你的filter配置在V2中有效,在MV3中可补充Service Worker激活日志确认运行状态:

调整后的background.js:

let callbackFilter = { types: ["main_frame", "sub_frame", "xmlhttprequest", "websocket"], urls: ["<all_urls>"] };

console.log("Service worker loaded");

// 监听激活事件,确认后台脚本正常启动
self.addEventListener('activate', (event) => {
    console.log("Service worker activated");
});

browser.webRequest.onBeforeRequest.addListener(() => {
    console.log("Received request event");
}, callbackFilter, []);

额外排查点

  • 打开Firefox扩展调试面板:进入about:debugging#/runtime/this-firefox,查看扩展的后台控制台日志,确认Service Worker是否正常加载
  • 若仍无触发,可先简化filter的types数组(比如只保留["main_frame"]),排查是否是特定请求类型未被匹配

内容的提问来源于stack exchange,提问作者Picard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:45:04