gpt4 book ai didi

javascript - 收到响应后使用 Chrome webRequest 进行 URL 转发

转载 作者:行者123 更新时间:2023-11-29 09:53:45 27 4
gpt4 key购买 nike

我正在尝试创建一个利用 Chrome 的 webRequest 的 Chrome 扩展程序模块执行重定向到从最初访问的 URL 获得的 URL。为此,我只想使用 Chrome 的 webRequest 函数(例如,onBeforeSendHeaders、onHeadersReceived),而不是简单地使用获得的 URL 执行对 $.ajax() 的调用。所需的功能是:

  1. 用户在地址栏中输入 URL
  2. 发出请求并从 HTTP 响应中提取辅助 URL
  3. chrome.webRequest.onHeadersReceived处理程序使用阻止响应的 redirectUrl 属性将用户重定向到此辅助 URL。

我的尝试是:

chrome.webRequest.onHeadersReceived.addListener(
function(details){
var secondaryURL = extractSecondaryURL(details);
return {redirectUrl: secondaryURL}; //this doesn't work
},
{urls:["http://*/*", "https://*/*"]},
["blocking","responseHeaders"]
);

...但是页面永远不会被转发。 webRequest 文档说,“仅用作对 onBeforeRequest 事件的响应。”关于 redirectUrl 属性,这可能是罪魁祸首。

如何使用从响应 header 和 Chrome webRequest 模块收到的数据执行这种转发?

最佳答案

web request API方法

所以,想法是存储来自 onHeadersReceived 事件的辅助 URL 并触发 chrome.tabs.reload()再次触发 onBeforeRequest 事件的事件,这有助于重定向。

示例演示

以下未经测试 :) 演示 block 所有 Facebook URL 并将它们重定向到 Google收到辅助 URL 后,您可以进一步自定义它。

引用资料

list .json

确保所有权限可用,并使用扩展名注册后台页面。

{
"name": "Hanlder for Navigation",
"description": "http://stackoverflow.com/questions/16928912/url-forwarding-using-chrome-webrequest-after-response-is-received",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"permissions":["https://www.facebook.com/*","webRequest","webRequestBlocking","tabs"]
}

后台.js

此代码阻止对 Facebook 的所有 URL 请求并将它们重定向到 Google .

var _redirectURL = "";
// Register an event listener which
//traces all requests before being fired
chrome.webRequest.onBeforeRequest.addListener(function (details) {
if (_redirectURL != "") {
return {
redirectUrl: "http://www.google.co.in/" /*Redirection URL*/
};
}
}, {
urls: ["*://www.facebook.com/*"] /* List of URL's */ * *
}, ["blocking"]); // Block intercepted requests until this handler has finished
chrome.webRequest.onHeadersReceived.addListener(function (details) {
if (_redirectURL == "") {
var secondaryURL = extractSecondaryURL(details);
_redirectUrl = secondaryURL;
chrome.tabs.reload();
}
}, {
urls: ["http://*/*", "https://*/*"]
}, ["blocking", "responseHeaders"]);

输出

所有请求Facebook被重定向到 Google .

关于javascript - 收到响应后使用 Chrome webRequest 进行 URL 转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928912/

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