Chrome扩展使用declarativeNetRequest重定向丢失参数问题
直接说几个大概率的问题和修复方式:
正则引用符号用错了:你在
regexSubstitution里写的\\0是错误的,Chrome的declarativeNetRequest中,引用整个匹配文本要用$0而非\0。JSON里直接写$0即可,无需转义。把redirect部分改成:"redirect": { "regexSubstitution": "chrome-extension://dasdsdasdnbbqswqdknciwncins/test.html?url=$0" }你之前的
\\0会被解析成ASCII空字符,自然带不上原URL参数。正则表达式匹配范围可能不完整:你的
regexFilter是(^http.*example\.com.*$),虽然能匹配大部分example.com的URL,但可以调整得更精准,比如^https?://.*example\.com/.*,确保完整匹配目标URL的所有场景。检查规则是否生效:进入Chrome扩展管理页面,打开你这款扩展的“详细信息”,找到“Declarative Net Request”选项,查看已加载的动态规则,确认这条规则的
condition和action配置正确,且没有被更高优先级的规则覆盖。权限是否齐全:manifest.json里必须声明
declarativeNetRequest权限,同时host_permissions要包含*://*.example.com/*,否则规则不会触发。示例配置如下:"permissions": ["declarativeNetRequest"], "host_permissions": ["*://*.example.com/*"]
另外,重定向后的URL里原URL的特殊字符(如?、&)可能干扰参数解析,你可以在test.html里用decodeURIComponent(new URLSearchParams(window.location.search).get('url'))来正确解码原URL。
内容的提问来源于stack exchange,提问作者Alex

