MV3扩展web_accessible_resources在file://页面注入资源被拦截如何解决?
这是Chrome 110及以上版本的安全设计特性,并非Bug。
问题根因
Chrome在该版本后收紧了web_accessible_resources的匹配逻辑,<all_urls>通配符默认不覆盖file://协议的页面上下文。即便是已经为扩展开启了「允许访问文件URL」权限,也无法通过该通配符匹配本地文件页面的资源访问请求,因此会返回net::ERR_BLOCKED_BY_CLIENT错误,这也是仅本地页面异常、HTTP页面完全正常的核心原因。
解决方案
你可以任选以下两种方案修复:
- 方案1:修改
web_accessible_resources配置,显式添加file:///*匹配规则,修改成本最低,调整后即可正常加载
调整后的配置示例:"web_accessible_resources": [ { "resources": [ "harviewer/*", "connection.js" ], "matches": [ "<all_urls>", "file:///*" ] } ] - 方案2:通过扩展消息传递直接拉取资源内容
如果不希望放宽资源匹配规则,可以在内容脚本中调用chrome.runtime.sendMessage向背景页请求目标资源内容,背景页读取资源后返回给内容脚本,再通过Blob URL或者内联的方式注入到页面,完全规避跨协议访问的限制。
内容的提问来源于stack exchange,提问作者hindmost
相关产品推荐
相关产品推荐

