Javascript 在firefox中重定向到扩展资源

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

出于开发目的,我试图构建一个扩展,将所有匹配正则表达式的请求重定向到特定页面。问题是FirefoxAPI似乎没有像chrome.webRequest.onBeforeSendHeaders.addListener的文档中所宣传的那样。以下是扩展的简化版本:

manifest.js

background.js

我需要扩展用于个人发展目的,因此我不介意更改
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 }