Javascript Chrome webRequest中阻止URL的URL重定向

Javascript Chrome webRequest中阻止URL的URL重定向,javascript,google-chrome,url,redirect,google-chrome-extension,Javascript,Google Chrome,Url,Redirect,Google Chrome Extension,我正在创建一个扩展,将某些站点重定向到本地扩展页面。在一些情况下,我希望用户能够根据我添加到扩展页面的URL参数转到实际站点。 因此,流程是: 用户访问“cnn.com” 它们被重定向到我的扩展页面,该页面有几个链接,如:cnn.com/story/page/text?showRealUrl=true 当他们点击这个“特殊”链接时,我想把他们带到真正的URL:cnn.com/story/page/text 这是我的密码: const approved = '?showRealUrl=true';

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

  • 用户访问“cnn.com”
  • 它们被重定向到我的扩展页面,该页面有几个链接,如:
    cnn.com/story/page/text?showRealUrl=true
  • 当他们点击这个“特殊”链接时,我想把他们带到真正的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
    事件触发时,我重新添加侦听器。

    根据控制台输出判断
    u
    是无效的URL,因为它没有类似于
    https://
    的协议。对不起,我手动键入了输出-现在修复了它
    u
    是有效的URL。