6

Internet Explorer プラグインを Firefox に移植しようとしていますが、必要なものをどこで探すべきかわかりません。

基本的に、特定の Content-Type ヘッダーを使用してブラウザーが受信するすべてのコンテンツをフィルター処理できる必要があります。ストリーム コンバーターを実装しようとしましたが、これは機能しますが、ページ、フレーム、または iframe の最上位のドキュメントに対してのみです。私はIEで同じ問題を抱えていました.それを回避するのは本当にハックでした.理想的にはこれをクロスプラットフォームにしたいので、vtableハックに頼らずにFirefoxでこれを実行できるようにしたいと思っています.

コンテンツは、独自の圧縮形式で圧縮されて提供されます。そのため、データを受信して​​解凍し、Content-Type を元の圧縮されていないファイルの内容に戻す必要があります。

受信したすべてのデータをフィルタリングする方法があれば、それはおそらく受け入れられるでしょう。ヘッダーの解析を自分で処理できます。

ありがとう

4

1 に答える 1

3

必要なものを見つけたかもしれないと思います。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

于 2009-07-04T07:43:48.337 に答える