manifest v3规范核心变更包括:取消持久化background页改用service worker、强制declarativenetrequest拦截网络请求、移除background字段并声明service_worker、content_scripts须静态声明匹配规则、禁止远程代码及eval类动态执行。

一、Manifest V3规范核心变更
Microsoft Edge 已全面采用 Manifest V3 作为扩展开发标准,其底层架构与 Chromium 引擎保持同步。该规范取消了持久化 background 页面,改用生命周期受限的 Service Worker 来响应事件;所有网络请求拦截逻辑必须通过 declarativeNetRequest API 实现,不再允许使用 webRequest API 的阻断式监听。
1、background 字段已被移除,需在 manifest.json 中声明 service_worker 字段并指向一个独立 JS 文件。
2、content_scripts 不再支持动态注入,所有匹配规则(matches、include_globs 等)必须静态声明于 manifest.json 内。
3、远程托管代码被明确禁止,所有执行脚本必须打包在扩展 ZIP 包内,且不得通过 eval()、setTimeout(string) 或 new Function() 执行字符串代码。
二、权限模型重构与分级控制
Manifest V3 将权限拆分为两类:通用权限(permissions)与主机权限(host_permissions),实现更细粒度的访问控制。Edge 浏览器在安装时仅展示 host_permissions 对应的具体域名列表,用户可直观判断扩展将访问哪些网站。
1、activeTab 权限不再隐含全页读取能力,仅在用户显式交互后临时授予当前标签页的 DOM 访问权。
2、tabs 权限默认不返回 URL 和 title 字段,需额外申请 "tabRead" 子权限才能获取完整标签信息。
3、host_permissions 必须精确列出所有需要通信的源(如 ["https://api.example.com/", "https://*.cdn.net/"]),通配符 *. 不再匹配顶级域(如 *://*/* 不被接受)。
三、内容安全策略(CSP)强化要求
Manifest V3 强制启用严格的内容安全策略,限制扩展自身资源加载行为,防止 XSS 攻击扩散。Edge 浏览器在加载扩展时会校验 manifest.json 中的 content_security_policy 字段是否符合最低合规要求。
1、extension_pages 的 CSP 必须显式声明 script-src,且值中不得包含 'unsafe-inline' 或 'unsafe-eval'。
2、若扩展使用内联脚本(如 HTML 中的 <script> 标签),必须为其添加 <strong><font color="green">nonce 属性并与 CSP 中的 nonce- 值一致。</script>
3、worker_src 必须明确指定 Service Worker 脚本来源,禁止使用 data: 或 blob: 协议加载。
四、调试与运行时能力调整
Manifest V3 对调试接口进行了收窄,同时增强异步操作的可靠性。Edge 浏览器在开发者模式下加载扩展时,将依据新规则验证 runtime 和 debugger 权限的实际使用场景。
1、debugger 权限仅允许附加到已声明的 targetTypes(如 "page", "background"),不可用于任意标签页。
2、chrome.runtime.connect() 和 chrome.runtime.sendMessage() 的消息大小上限降为 10MB(压缩前),超限将触发错误且无回调。
3、Service Worker 在空闲 30 秒后自动终止,需通过 chrome.alarms 或 chrome.notifications 等持久事件维持活跃状态。










