如何捕获源自我自己的Firefox Web Extension的流量

时间:2016-10-03 02:49:57

标签: javascript firefox firefox-addon firefox-webextensions

我正在开发一个Firefox扩展( WebExtension ),作为其中一个功能,它需要从网络请求资源并覆盖响应头,特别是那些控制浏览器如何处理响应的响应头(例如,应从内容编码中删除gzip编码以检索“原始”响应)。

问题是我无法找到一种方法来拦截我的扩展程序所做的请求。这在Chrome中运行良好,我可以直接拦截用户提出的请求。

此问题影响所有webRequest处理程序,但该示例适用于onHeadersReceived(简化为最低限度):

function OnHeadersReceived(details){
    console.log('Received headers for ' + details.url);
}

chrome.webRequest.onHeadersReceived.addListener(OnHeadersReceived, { urls: ['<all_urls>'] });

这是一个非常简单的请求示例:

fetch('http://www.alexa.com')

同样的问题适用于XMLHttpRequest

对此问题的任何见解表示赞赏。我知道Chrome不允许拦截来自其他扩展程序的请求,但对于在您自己的扩展程序中发出的请求没有任何内容。

更新

在BugZilla上发现了一个错误:WebExtensions: webRequest listeners do not fire for XMLHttpRequest requests generated by the extension

1 个答案:

答案 0 :(得分:0)

如果有其他人想知道,这是Firefox中的一个问题,它已在第52版修复。 现在,所有来自Web扩展的请求也会被这些扩展中的处理程序拦截。