【问题标题】:URL redirect in Chrome webRequest for blocked URLsChrome webRequest中的URL重定向被阻止的URL
【发布时间】:2020-11-05 15:38:01
【问题描述】:

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

  1. 用户访问“cnn.com”
  2. 他们被重定向到我的扩展页面,该页面有一些链接,例如:cnn.com/story/page/text?showRealUrl=true
  3. 当他们点击这个“特殊”链接时,我想把他们带到真实的 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。

我该如何解决这个问题?

【问题讨论】:

  • 从控制台输出判断u是一个无效的URL,因为它没有像https://这样的协议
  • 抱歉,我手动输入了输出 - 现在已修复。 u 是一个有效的 URL。

标签: javascript google-chrome url redirect google-chrome-extension


【解决方案1】:

似乎没有一种直接的方法可以做到这一点,所以当我想访问实际网站时,我最终删除了侦听器,然后在onCompleted 事件触发时重新添加了侦听器。

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 2020-12-10
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 2020-06-25
    • 2019-05-13
    相关资源
    最近更新 更多