【问题标题】:Does the Firefox add-on sdk allow direct modification of the http response byte stream?Firefox 插件 sdk 是否允许直接修改 http 响应字节流?
【发布时间】:2013-08-13 06:05:18
【问题描述】:

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

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

【问题讨论】:

    标签: firefox-addon http-compression


    【解决方案1】:

    如果它们将被删除,我不想费心学习旧方法

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

    回到您的问题:附加 sdk 没有为此类内容提供显式 API,但您始终可以更底层,即使在 SDK 中(通过 chrome 模块和/或 @ 987654322@).

    要实现其他压缩方法,您需要实现nsIStreamConverter 接口并在@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 组件存根 + js-ctypes 可能会更好。
    • 首先查看 Mozilla 源代码,了解如何implement nsIStreamConverter

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

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2017-12-22
      相关资源
      最近更新 更多