我正在尝试实现一个Web扩展,它可以从链接中删除重定向中间件。例如,当您点击从vk.com(社交网络)到外国网站的任何链接时,您将被导航到https://vk.com/away.php?to=URL_GOES_HERE
。为什么在browser.webNavigation.onBeforeNavigate时webRequest.onBeforeSendHeaders不提供查询字符串呢?
当你听onBeforeNavigate
事件这样的:
browser.webNavigation.onBeforeNavigate.addListener(
(details) => {
console.log('before navigate', details);
}, {
url: [
{hostContains: "vk.com"}
]
}
);
你会得到完整的URL:before navigate Object { url: "https://vk.com/away.php?to=URL_GOES_HERE", timeStamp: 1488807415002, frameId: 0, parentFrameId: -1, tabId: 2 }
但是你没有选择,以取代另一个URL的导航作用。你有这种能力只为webRequest
API:
browser.webRequest.onBeforeSendHeaders.addListener(
(details) => {
console.log('before web request', details)
},
{urls: [
'*://vk.com/away.php'
]},
['blocking', 'requestHeaders']
);
但URL有不包含查询参数:before web request Object { requestId: "1", url: "http://vk.com/away.php", originUrl: "https://vk.com/feed", method: "GET", type: "main_frame", timeStamp: 1488807415092, frameId: 0, parentFrameId: -1, tabId: 2, requestHeaders: Array[6] }
为什么工作这么?这是一个错误还是什么?