Is it possible to work with async/await in the chrome API's webRequest.onBeforeRequest?
The following does work; From "working" I mean it does block/cancel the request as I expect.
chrome.webRequest.onBeforeRequest.addListener(
function (details) {
console.log("URL intercepted:", {url: details.url, type: details.type,});
let match = details.url.match(/:\/\/(www\.)?someSiteThatIWantAvoidRawIp\.org(\/)?$/); // you are accessing this url on your chorme
if (match)
{
console.log("URL blocked:", { url: details.url, type: details.type, match: match, });
return { cancel: true };
}
},
{
urls: [
"<all_urls>"
],
types: ["main_frame",]
},
["blocking",]
);
However, the following does not work; It is supposed to block/cancel the request after waiting the await, but the cancel doesn't work but the page shows up without a connection error.
chrome.webRequest.onBeforeRequest.addListener(
async function (details) {
console.log("URL intercepted:", {url: details.url, type: details.type,});
let match = details.url.match(/:\/\/(www\.)?someSiteThatIWantAvoidRawIp\.org(\/)?$/);
let ip = await axios.get('https://someSiteThatChecksMyIp.org', {}) // this gets my ip
.then(r => {
console.log(r);
return r.data;
})
.catch(e => {
console.log(e);
});
if (match)
{
if (ip == "123.123.123.123") // assume my raw ip
{
console.log("URL blocked:", { url: details.url, type: details.type, match: match, });
return { cancel: true };
}
}
},
{
urls: [
"<all_urls>"
],
types: ["main_frame",]
},
["blocking",]
);
What's incorrect with my setup? Thanks.