URL 在 Chrome webRequest 中重定向以阻止 URLs
URL redirect in Chrome webRequest for blocked URLs
我正在创建一个将某些网站重定向到本地扩展页面的扩展。在少数情况下,我希望用户能够根据我添加到扩展页面的 URL 参数转到实际站点。
所以流程是:
- 用户前往 'cnn.com'
- 它们被重定向到我的扩展页面,其中有几个 link,例如:
cnn.com/story/page/text?showRealUrl=true
- 当他们点击这个'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
事件触发。
我正在创建一个将某些网站重定向到本地扩展页面的扩展。在少数情况下,我希望用户能够根据我添加到扩展页面的 URL 参数转到实际站点。 所以流程是:
- 用户前往 'cnn.com'
- 它们被重定向到我的扩展页面,其中有几个 link,例如:
cnn.com/story/page/text?showRealUrl=true
- 当他们点击这个'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
事件触发。