Chrome Manifest V3扩展:HTTPS可修改请求头,HTTP下失效求助
问题解决:Chrome扩展HTTP请求无法修改请求头的原因与修复方案
核心问题分析
你的扩展仅能修改HTTPS请求头,HTTP请求无效,主要有两个关键原因:
- HTTP主机权限未配置:manifest.json的
host_permissions仅包含https://*/*,扩展没有权限拦截和修改HTTP请求。 - 规则ID冲突:静态规则(rules.json)和动态规则(background.js)的ID都为1,导致动态规则无法正常生效或被覆盖。
修复步骤
1. 补充HTTP主机权限
修改manifest.json中的host_permissions,添加HTTP的权限:
"host_permissions": [ "https://*/*", "http://*/*" ],
2. 修正规则ID冲突
将background.js中的动态规则ID改为不重复的值(比如2),避免与静态规则ID(1)冲突:
chrome.declarativeNetRequest.updateDynamicRules({ addRules: [ { id: 2, // 修改为唯一ID priority: 1, action: { type: 'modifyHeaders', requestHeaders: [ { header: "Accept-language", operation: 'set', value: "hu" }, ], }, condition: { urlFilter: '|http*', resourceTypes: [ 'main_frame', 'sub_frame', 'script' ], }, }, ], removeRuleIds: [2] // 对应修改移除的规则ID }, async (result) => { console.log('created', result); });
3. 验证修复效果
- 重新加载扩展(Chrome扩展管理页面点击"重新加载")
- 访问你的HTTP测试页面
http://mytestes.com,检查请求头是否包含自定义的accept-language: hu和Proxy-switching-extension: true
内容的提问来源于stack exchange,提问作者HiGromp
相关产品推荐
相关产品推荐

