Firefox扩展中如何用WebRequest API匹配含尾斜杠的指定URL?
解决Firefox扩展WebRequest无法拦截带尾斜杠的Instagram URL问题
问题原因
输入instagram.com/时,Instagram会自动重定向到带www前缀的域名(比如https://www.instagram.com/),而现有规则仅覆盖了instagram.com,未包含其子域名www.instagram.com,导致拦截失效。example.com没有这类强制重定向逻辑,所以带不带斜杠都能被正常拦截。
修复方案
修改background.js中的urls数组,添加匹配所有Instagram子域名的规则:
const urls = ["*://*.instagram.com/*", "*://example.com/*"]
*://*.instagram.com/*会匹配所有协议(http/https)、所有子域名(含www.)以及任意路径的Instagram请求,不管输入instagram.com、instagram.com/还是www.instagram.com都能拦截。- 原有的
*://instagram.com/规则可直接删除,因为*://*.instagram.com/*已覆盖该场景。
验证步骤
可以在监听函数中打印实际请求的URL,确认重定向情况:
function(details) { console.log("拦截到的URL:", details.url); return {cancel: true}; }
重新加载扩展后,输入instagram.com/测试,查看控制台输出的URL是否为带www的域名,同时确认请求被成功拦截。
额外说明
你的manifest.json配置无问题,persistent: false(非持久化背景页)不会影响webRequest的拦截逻辑,只要权限配置正确即可。
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

