You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展Manifest V3:declarativeNetRequest重定向规则配置错误排查

问题分析与修正方案

存在的错误

  • 重定向规则的urlFilter匹配了错误域名test.example.com,而非目标www.dmm.com,若存在旧的全局代理规则残留,就会出现所有网站被代理的异常
  • 重定向URL使用固定字符串,无法保留原请求的路径后缀(比如原请求的/things无法传递到新URL)
  • host_permissions未包含重定向目标域名kcwiki.github.io,可能触发权限限制导致重定向失败

修正后的代码

manifest.json

{
    "manifest_version": 3,
    "name": "Dynamic Declarative Redirect Extension",
    "version": "1.0",
    "permissions": [
        "declarativeNetRequest"
    ],
    "host_permissions": [
        "file:///*",
        "*://*.dmm.com/*",
        "*://kcwiki.github.io/*"  // 新增重定向目标域名权限
    ],
    "background": {
        "service_worker": "background.js"
    },
    "web_accessible_resources": [
        {
            "resources": [
                "*/*"
            ],
            "matches": [
                "*://www.dmm.com/*",
                "*://osapi.dmm.com/*",
                "*://kcwiki.github.io/*"
            ]
        }
    ]
}

background.js

const initialRules = [
    {
        id: 1,
        priority: 1,
        action: {
            type: 'redirect',
            redirect: {
                // 使用transform保留原路径,替换域名和前缀
                transform: {
                    scheme: "https",
                    host: "kcwiki.github.io",
                    pathPrefix: "/cache"
                }
            }
        },
        condition: {
            // 精准匹配www.dmm.com的所有请求,可按需调整resourceTypes
            urlFilter: "*://www.dmm.com/*",
            resourceTypes: ["main_frame", "xmlhttprequest", "script", "style"]
        }
    }
];

chrome.runtime.onInstalled.addListener(async () => {
    // 清理旧规则
    const oldRules = await chrome.declarativeNetRequest.getDynamicRules();
    await chrome.declarativeNetRequest.updateDynamicRules({
        removeRuleIds: oldRules.map(r => r.id)
    });
    // 添加新规则
    await chrome.declarativeNetRequest.updateDynamicRules({
        addRules: initialRules
    });
    console.log("重定向规则已设置");
});

说明

  • 使用transform而非固定URL,可自动将https://www.dmm.com/xxx重定向为https://kcwiki.github.io/cache/xxx,完美保留原路径
  • 扩展了resourceTypes,确保各类资源请求都能被正确重定向,可根据实际需求删减
  • 新增了kcwiki.github.io的主机权限,避免权限不足导致的重定向失败

内容的提问来源于stack exchange,提问作者Kwang Sing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:57:34