3

私は、自分自身の学術的な演習として意図したプロジェクトに取り組んでいます。私が基本的にやっていることは、IIS サーバーと Web ブラウザーの間にカスタム圧縮タイプを追加しようとしていますが、そのブラウザーの側面にはまってしまいます。基本的に必要なのは、クライアントに送信される前にサーバーでバイト ストリームを変更できることと、クライアントのブラウザー側で、他の通常の DOM 解析などが行われる前に、受信した応答バイト ストリームを変更できることです。サーバー側では、これはかなり些細なことであることが判明しましたが、クロムまたはファイアフォックスでこれを行う方法に途方に暮れています。誰かがクロムに​​ついて洞察を持っている場合は、共有してください。ただし、今のところ Firefox に焦点を当てます。私の理解では、これまで Firefox は拡張機能に対してかなり低いレベルのアクセスしか利用できませんでしたが、Firefox アドオン SDK を使用して、今後は制限を少し強化しています。古いメソッドが削除される予定がある場合、それらをわざわざ学習したくないので、アドオン SDK を使用してこの方法でバイト ストリームを直接変更できるかどうかを明確に知っている人はいますか? もしそうなら、そのような使用例はありますか?

(Accept-Encoding ヘッダーで圧縮をネゴシエートする必要があることは承知しています)

4

1 に答える 1

2

古いメソッドが削除される予定がある場合、わざわざ古いメソッドを学習したくありません。

レガシー アドオンのサポートを削除する予定は、現在も将来もありません。少なくとも、アドオン SDK の関係者や拡張機能マネージャーの関係者は、繰り返し私にそう言ってきました。

質問に戻る: アドオン SDK は、このようなものに対して明示的な API を提供しませんが、SDK でも (chromeモジュール および/またはを介し​​てwindow/utils) いつでもさらに低レベルに進むことができます。

追加の圧縮方法を実装するには、インターフェイスを実装し、コントラクト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 の方がよいかもしれません。
  • そもそもの実装nsIStreamConverter方法については、mozilla ソースコードを参照してください。

network.http.accept-encoding圧縮が実際にサーバーとネゴシエートされるように、設定を変更する必要がある場合もあります。

于 2013-08-13T10:41:56.797 に答える