javascript - Chrome webRequest中的URL重定向被阻止的URL
问题描述
我正在创建一个将某些站点重定向到本地扩展页面的扩展。在少数情况下,我希望用户能够根据我添加到扩展页面的 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
事件触发时重新添加了侦听器。
推荐阅读
- jhipster - 有没有办法在重新生成实体时不覆盖对实体所做的修改?
- java - Java 8 - 从具有嵌套列表的对象列表中收集到地图中
- spring - resttemplate GET 将一个集合包装在一个附加标签中
- python - 如何获得只有上对角线元素的零矩阵?(上对角线元素已知)
- python - OpenAI 健身房渲染 OSError
- sql - 如何使用 SQL 从 2 个表中获取百分比
- rdf - 在 Linux 上将图形加载到 graphDB 后如何找到丢失的三元组?
- google-analytics-api - 选择正确的 Google Analytics API 指标
- swift - 如何删除 Firestore 字典值?
- google-sheets - 如何在 Google 表格中使用变量范围?