我想我可能已经找到了我需要的东西。我遇到了这个用于跟踪 HTTP 调用的链接:http: //blues.ath.cx/firekeeper/resources/http_tracer.html
由于某种原因,JavaScript 实现似乎存在一些问题,而且我不是 JavaScript 专家来解决它,但我已经用 C++ 实现了它,初步结果表明我应该能够根据我的需要对其进行修改.
基本上,我们用我们自己的实现替换了 nsIHttpProtocolHandler 服务,它保留了对初始实现的引用。当调用服务时,我们只是将其代理到保存的原始实现。然后我们提供我们自己的 nsIHttpChannel 和 nsIStreamListener 实现,我们也将它们用作代理。
我们再次将大部分调用代理回原始处理程序。但是在 OnDataAvailable 中,我们没有将数据传递给底层的 nsIStreamListener,而是使用 nsIStorageStream 保存它。然后在 OnStopRequest 中,当我们得到所有数据后,我们可以解压它,然后在原始处理程序上调用 OnDataAvailable,然后调用 OnStopRequest。
到目前为止,它已经进行了一些小的简单测试,但我必须通过一些更严格的测试......我还必须弄清楚我是否可以用 HTTPS 做同样的事情。
我目前看到的最大问题是它依赖于一些未冻结的接口,例如 nsIHttpChannelInternal。但据我所知,我无能为力,而且我的版本兼容性要求很小,所以如果必须的话,我可以忍受。
同时,如果有人有任何其他建议,我会全力以赴:D