Chrome扩展使用declarative_net_request无法添加自定义Authorization头
以下是导致请求头未成功添加的关键问题及修正方案:
1. 主机权限配置位置错误
在Manifest V3中,host_permissions必须放在扩展配置的根节点,而非declarative_net_request内部。原配置将"*"放在declarative_net_request下,导致扩展无法获取全局主机访问权限,规则无法生效。
同时,declarativeNetRequestWithHostAccess权限可移除,仅保留declarativeNetRequest即可配合host_permissions实现功能。
2. 请求头操作类型选择不当
原规则使用append操作,若请求原本已存在Authorization头会添加重复项;部分场景下浏览器也可能拦截append操作导致头无法添加。改用set操作更稳妥,确保目标请求头被设置或覆盖。
3. URL匹配规则优化
原规则使用正则.*匹配所有URL,改用通配符*更符合MV3的规则匹配习惯,避免正则可能带来的潜在匹配问题。
修正后的manifest.json
{ "manifest_version": 3, "name": "Authorization Headers", "description": "Authorization Headers", "version": "0.3.3", "author": "abc", "minimum_chrome_version": "96", "offline_enabled": false, "content_security_policy": { "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';" }, "permissions": ["declarativeNetRequest"], "host_permissions": ["*"], "declarative_net_request": { "rule_resources": [ { "id": "example_rules", "enabled": true, "path": "rules.json" } ] } }
修正后的rules.json
[ { "id": 1, "priority": 1, "action": { "type": "modifyHeaders", "requestHeaders": [ { "operation": "set", "header": "Authorization", "value": "1234" } ] }, "condition": { "urlFilter": "*", "resourceTypes": ["main_frame", "sub_frame", "stylesheet", "script", "image", "font", "object", "xmlhttprequest", "ping", "csp_report", "media", "websocket", "other"] } } ]
最后注意事项
修改配置后,必须在Chrome扩展管理页面点击重新加载按钮,确保新配置生效。测试时打开开发者工具的网络面板,勾选"Preserve log"查看请求头是否已添加。
内容的提问来源于stack exchange,提问作者Naxi
相关产品推荐
相关产品推荐

