URL 在 Chrome webRequest 中重定向以阻止 URLs

URL redirect in Chrome webRequest for blocked URLs

我正在创建一个将某些网站重定向到本地扩展页面的扩展。在少数情况下,我希望用户能够根据我添加到扩展页面的 URL 参数转到实际站点。 所以流程是:

  1. 用户前往 'cnn.com'
  2. 它们被重定向到我的扩展页面,其中有几个 link,例如:cnn.com/story/page/text?showRealUrl=true
  3. 当他们点击这个'special'link,我想带他们去真正的URL:cnn.com/story/page/text

这是我的代码:

const approved = '?showRealUrl=true';
chrome.webRequest.onBeforeRequest.addListener(
    function swenNewsListener (details) {
        var i = 0;
            if (details.url.endsWith(approved) ) {
                i = i + 1; 
                var u = details.url.replace(approved, '')
                console.log(i + " actual URL: " + u );
                return { redirectUrl: u }; // this doesn't seem to work
            } else {
                console.log(i + " in ext mode");
                var baseUrl = new URL(details.url).hostname.split(".").slice(-2).join(".")
                return { redirectUrl: chrome.extension.getURL("markup/articleList.html?sourceUrl=" + baseUrl) };
            }
    },
    { urls: ["*://*.cnn.com/*"] },  
    ["blocking"]
);

但是控制台输出是:

1 actual URL: https://cnn.com/story/page/text
0 in ext mode

它让我直接回到扩展页面而不是真正的 URL。

我该如何解决这个问题?

似乎没有直接的方法来做到这一点,所以我最终在想转到实际网站时删除了监听器,然后在 onCompleted 事件触发。