Chrome扩展Manifest v3重定向本地文件报错问题求助
解决Chrome Manifest v3中重定向至扩展本地文件的ERR_UNSAFE_REDIRECT问题
问题分析
你遇到的net::ERR_UNSAFE_REDIRECT错误,本质是Chrome安全限制导致:当从外部域名(如你的cloudfront域名)重定向到扩展内部资源(chrome-extension://协议)时,必须明确授权外部域名可访问该扩展资源,同时配置正确的权限。
解决方案
1. 配置web_accessible_resources(核心步骤)
在manifest.json中添加该字段,将你要重定向的本地脚本声明为可被目标外部域名访问:
"web_accessible_resources": [ { "resources": ["/scripts/*.js"], "matches": ["https://d35aaqx5ub95lt.cloudfront.net/*"] } ]
resources:指定允许访问的扩展内部文件路径,用通配符*匹配所有js文件matches:限定可访问这些资源的外部域名,必须和你要拦截的请求域名完全匹配
2. 确保权限配置正确
在manifest.json的permissions字段中,添加必要的权限:
"permissions": [ "declarativeNetRequest", "https://d35aaqx5ub95lt.cloudfront.net/*" ]
declarativeNetRequest:启用声明式网络请求功能- 目标域名权限:确保扩展有权拦截该域名下的请求
3. 验证规则路径与格式
你的动态规则写法本身是正确的,但需确认:
extensionPath中的路径是相对于扩展根目录的绝对路径,比如/scripts/app-8d620ab3.js确实存在于扩展包的scripts文件夹下- 如果使用静态规则集(
rules.json),需在manifest.json中正确声明:
"declarative_net_request": { "rule_resources": [ { "id": "my_rules", "enabled": true, "path": "rules.json" } ] }
关键说明
重定向到外部URL正常是因为Chrome允许跨域重定向到普通HTTP/HTTPS资源,但扩展内部资源属于受保护的chrome-extension://协议,必须通过web_accessible_resources明确授权外部域名访问,否则会触发安全拦截。
内容的提问来源于stack exchange,提问作者Nowam
相关产品推荐
相关产品推荐

