gpt4 book ai didi

javascript - Chrome webRequest 只监听用户输入的 URL

转载 作者:行者123 更新时间:2023-11-29 10:36:01 25 4
gpt4 key购买 nike

我正在制作一个 Chrome 扩展程序,它只允许用户访问给定白名单上的网站。 chrome.webRequest.onBeforeRequest 非常适合拦截和检查 URL,但我遇到的问题是它会检查所有传入的 URL,包括网页何时尝试加载资源。我希望它只检查用户输入的 URL,如果该 URL 在白名单上,我希望它允许该网页加载它需要的任何资源,无论它们是否在白名单上。

这是我的监听器代码。

    chrome.webRequest.onBeforeRequest.addListener(
function(info) {
console.log("URL: " + info.url);
var pageURL = info['url'];
let mngwlst = new ManageWhitelist();
var whitelist = mngwlst.getWhitelist();
if(whitelist == null) mngwlst.setWhitelist([]);
var denyRequest = false;
var denyRequest = monitor.ExamineWhitelist(pageURL, whitelist);
console.log(denyRequest);
return {cancel: denyRequest}
},

{
urls: [
"<all_urls>"
],
},

["blocking"]);

monitor.ExamineWhitelist(pageURL, whitelist) 将根据 URL 是否在白名单中返回 true 或 false。

最佳答案

尝试仅过滤“用户输入”的 URL 很棘手,但在这里可能对您有所帮助的是 webRequest 资源类型:https://developer.chrome.com/extensions/webRequest#type-ResourceType

资源类型允许您只过滤特定类型的请求。例如,'Main_frame' 是在顶层框架加载的文档。这样,您的 onBeforeRequest 监听器就不会在每次请求图像或样式表时触发。

您可以像按 URL 过滤一样按类型过滤:

chrome.webRequest.onBeforeRequest.addListener(
function(info) {
console.log("URL: " + info.url);
var pageURL = info['url'];
let mngwlst = new ManageWhitelist();
var whitelist = mngwlst.getWhitelist();
if(whitelist == null) mngwlst.setWhitelist([]);
var denyRequest = false;
var denyRequest = monitor.ExamineWhitelist(pageURL, whitelist);
console.log(denyRequest);
return {cancel: denyRequest}
},

{
urls: ["<all_urls>"],
types: ["main_frame"],
},
["blocking"]);

关于javascript - Chrome webRequest 只监听用户输入的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36207557/

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