Javascript 在firefox中重定向到扩展资源
出于开发目的,我试图构建一个扩展,将所有匹配正则表达式的请求重定向到特定页面。问题是FirefoxAPI似乎没有像chrome.webRequest.onBeforeSendHeaders.addListener的文档中所宣传的那样。以下是扩展的简化版本: manifest.js background.js 我需要扩展用于个人发展目的,因此我不介意更改Javascript 在firefox中重定向到扩展资源,javascript,firefox-addon,xss,Javascript,Firefox Addon,Xss,出于开发目的,我试图构建一个扩展,将所有匹配正则表达式的请求重定向到特定页面。问题是FirefoxAPI似乎没有像chrome.webRequest.onBeforeSendHeaders.addListener的文档中所宣传的那样。以下是扩展的简化版本: manifest.js background.js 我需要扩展用于个人发展目的,因此我不介意更改about:config 编辑:如果我将重定向url更改为web上的某个内容,并将onbeforerequeest更改为onBeforeSendH
about:config
编辑:如果我将重定向url更改为web上的某个内容,并将onbeforerequeest
更改为onBeforeSendHeaders
一切正常:
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
var redirect;
if (details.url.match(/example\.com/)) {
redirect = "https://www.google.com"; // chrome.extension.getURL("hello.html");
console.log("Redirecting:", details.url, "->", redirect);
return {redirectUrl: redirect};
}
console.log("Requesting:",details.url);
}, {urls: [
"<all_urls>"
]}, ["blocking"]);
chrome.webRequest.onBeforeSendHeaders.addListener(
功能(详情){
var重定向;
if(details.url.match(/example\.com/){
重定向=”https://www.google.com;//chrome.extension.getURL(“hello.html”);
log(“重定向:”,details.url,“->”,重定向);
返回{redirectUrl:redirect};
}
log(“请求:”,details.url);
},{URL:[
“在addListener
部分中,说明:
返回:webRequest.BlockingResponse。如果在“extraInfoSpec”参数中指定了“blocking”,则事件侦听器应返回此类型的对象
然后在文档中:
重定向URL可选
字符串。仅用作对onBeforeRequest和onHeadersReceived事件的响应。如果设置,则阻止原始请求
从发送/完成,改为重定向到给定的URL。
允许重定向到非HTTP方案,如data:。重定向
由重定向操作启动,使用原始请求方法
重定向,但有一个例外:如果在
onHeadersReceived阶段,则将使用
获取方法
这对我来说对chrome和firefox都有效
let { tabId } = details;
let redirectUrl = chrome.extension.getURL('hello.html');
if(navigator.userAgent.toLowerCase().indexOf("firefox") > -1) {
chrome.tabs.update(tabId, {
url: redirectUrl
})
return {
cancel: true
}
} else return { redirectUrl }
我真的不明白为什么会被否决……虽然我没有否决,但我可能会这么做,因为:A)您声明某些东西没有按照文档执行,但没有链接到文档;B)您没有告诉我们您正在开发什么(我们可以猜测,但我们不应该这样做)@fakedrake我也遇到了同样的问题。你找到解决方案了吗?没有。值得一提的是,它在IIRC背面的chrome上运行良好
<html>
<head>It works</head>
<body>And it's not apache!</body>
</html>
Redirecting: "http://example.com/" -> "moz-extension://ce33a9b5-2c20-ed41-b8aa-f52143783c38/hello.html"
Security Error: Content at http://example.com/ may not load or link to file:///path/to/extension/hello.html.
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
var redirect;
if (details.url.match(/example\.com/)) {
redirect = "https://www.google.com"; // chrome.extension.getURL("hello.html");
console.log("Redirecting:", details.url, "->", redirect);
return {redirectUrl: redirect};
}
console.log("Requesting:",details.url);
}, {urls: [
"<all_urls>"
]}, ["blocking"]);
let { tabId } = details;
let redirectUrl = chrome.extension.getURL('hello.html');
if(navigator.userAgent.toLowerCase().indexOf("firefox") > -1) {
chrome.tabs.update(tabId, {
url: redirectUrl
})
return {
cancel: true
}
} else return { redirectUrl }