firefox-addon - Firefox附加sdk是否允许直接修改http响应字节流?

标签 firefox-addon http-compression

我正在开展一个项目,我打算将其作为自己的学术练习。我基本上所做的就是尝试在 IIS 服务器和 Web 浏览器之间添加自定义压缩类型,但陷入了浏览器方面的困境。基本上需要的是能够在将字节流发送到客户端之前更改服务器上的字节流,并且在客户端浏览器端能够在其他正常 DOM 解析等发生之前更改接收到的响应字节流。在服务器端,这被证明是非常微不足道的,但我不知道如何在 Chrome 或 Firefox 中执行此操作。如果有人对 chrome 有见解,请分享,但我现在将重点关注 Firefox。我的理解是,以前 Firefox 对扩展程序的访问级别相当低,但他们正在通过 Firefox 附加 sdk 稍微收紧限制。如果旧方法将被删除,我不想费心学习它们,所以有人明确知道附加 SDK 是否允许您以这种方式直接更改字节流?如果是这样,您有此类用法的示例吗?

(我知道我需要与 Accept-Encoding header 协商压缩)

最佳答案

I don't want to bother learning the old methods if they are slated to be removed

现在或将来都没有计划删除旧版附加组件支持。至少附加 SDK 人员和扩展管理器人员反复告诉我的是这样的。

回到你的问题:附加 SDK 没有为此类内容提供显式 API,但你始终可以进入更低级别,甚至在 SDK 中也是如此(通过 chrome 模块和/或 window/utils )。

要实现其他压缩方法,您需要实现 nsIStreamConverter 接口(interface)并在 @mozilla.org/streamconv;1@?from=<yourcompression>&to=uncompressed 合约下正确注册您的组件。那么 Firefox 应该能够解码 yourcompression

  • 有关如何使用 JavaScript 或 C++ 实现和注册 XPCOM 组件的详细信息,请参阅 https://developer.mozilla.org/
  • 使用 SDK 或实现无需重新启动的插件将需要您自行注册组件,而不是依赖 chrome.manifest。已经有几个附加组件这样做了,例如Adblock Plus
  • 应避免使用二进制 (C++) 组件,因为您显然需要为每个受支持的平台编译组件,并且需要为每个 Gecko 版本重新编译它。如果您必须采用二进制,则 JavaScript 组件 stub + js-ctypes 可能会更好。
  • 首先请参阅 mozilla 源代码,了解如何获取 implement nsIStreamConverter

您可能还需要修改 network.http.accept-encoding 首选项,以便可以实际与服务器协商压缩。

关于firefox-addon - Firefox附加sdk是否允许直接修改http响应字节流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18201785/

相关文章:

javascript - 从 Greasemonkey 访问变量到页面,反之亦然

javascript - 如何使 Firefox 扩展 URL 按钮在悬停时显示字符串

javascript - 如何在 Firefox 扩展中替换多个单词

azure - 使用 Azure WebRole 一段时间后,JSON 内容压缩将停止工作

asp.net - 如何在asp.net中压缩图像?

iis - gzip 压缩不适用于 IIS 8.5

azure - 为 WIndows Azure 网站配置 http压缩设置

java - 处理 HTTP ContentEncoding "deflate"

javascript - 以编程方式从 javascript 调用 firefox 扩展

python - 在 gulp 中运行带参数的命令