如何捕获来自我自己的 Firefox Web 扩展的流量
How can I capture traffic originating from my own Firefox Web Extension
我正在开发 Firefox 扩展 (WebExtension),作为其功能之一,需要从网络请求资源并覆盖响应 headers,尤其是那些控制浏览器如何处理响应的(例如,应该从 content-encoding 中删除 gzip 编码以检索 'raw' 响应)。
问题是我找不到拦截由我的分机发出的请求的方法。这在 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
如果有人想知道,这是 Firefox 中的一个问题,它已在版本 52 中修复。
现在,所有来自 Web 扩展的请求也会被这些扩展中的处理程序拦截。
我正在开发 Firefox 扩展 (WebExtension),作为其功能之一,需要从网络请求资源并覆盖响应 headers,尤其是那些控制浏览器如何处理响应的(例如,应该从 content-encoding 中删除 gzip 编码以检索 'raw' 响应)。
问题是我找不到拦截由我的分机发出的请求的方法。这在 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
如果有人想知道,这是 Firefox 中的一个问题,它已在版本 52 中修复。 现在,所有来自 Web 扩展的请求也会被这些扩展中的处理程序拦截。