gpt4 book ai didi

javascript - 重定向没有任何引用网址的网址

转载 作者:行者123 更新时间:2023-11-28 00:51:31 24 4
gpt4 key购买 nike

仅当 header 不包含任何引荐来源网址时,我才必须从 www.example.com 重定向到 xyz.example.com。我写了这段代码:

chrome.webRequest.onHeadersReceived.addListener(
function(details) {
var match = details.url.match(/^(http|https):\/\/www.example.com\/([\S\s]*)/);
console.log(details);
return {redirectUrl: match[1] + "://xyz.example.com/" + match[2]};
},
{urls: ["*://www.example.com/*"]},
["responseHeaders", "blocking"]
);

但是“onHeadersReceived”不包含任何引用者信息。所以我无法根据引用者信息进一步编写我的逻辑。有一个 API“onBeforeSendHeaders”包含引用者信息,但它无法重定向。您能否建议任何可以提供推荐人信息并重定向的解决方案。以下是所有可用 API 的链接:Chrome API's link

最佳答案

正如 RobW 指出的那样,可以在 onHeadersReceived 阶段重定向请求。

所以,计划:

  1. 确定您要在 onBeforeSendHeaders 阶段重定向哪个请求。
  2. 保存请求 ID。
  3. 监听 onHeadersReceived 事件。
  4. 将请求 ID 与保存的请求 ID 进行比较。
  5. 根据需要重定向。

所以:

var requestsToRedirect = new Object();

chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
for (var i = 0; i < details.requestHeaders.length; i++) {
if (details.requestHeaders[i].name === 'Referer') {
requestsToRedirect[details.requestId] = true;
return;
}
}
},
{urls: ["*://www.example.com/*"]},
["requestHeaders"]
);

chrome.webRequest.onHeadersReceived.addListener(
function(details) {
if(requestsToRedirect[details.requestId]) {
delete requestsToRedirect[details.requestId];
var match = details.url.match(/^(http|https):\/\/www.example.com\/(.*)/);
return {redirectUrl: match[1] + "://xyz.example.com/" + match[2]};
}
},
{urls: ["*://www.example.com/*"]},
["blocking"]
);

chrome.webRequest.onErrorOccurred.addListener(
function(details) {
// Cleanup in case we don't reach onHeadersReceived
delete requestsToRedirect[details.requestId];
},
{urls: ["*://www.example.com/*"]}
);

关于javascript - 重定向没有任何引用网址的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26720766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com