2011-02-08 10 views
0

私はプラグインを開発しており、与えられた ホストに対してブラウザプロキシを取得する必要があります。xpcomglueを使わずにNPAPIプラグインからブラウザプロキシを取得するには?

現在、nsIProtocolProxyServiceを使用して動作します。しかし、NewURI 関数( nsIProtocolProxyServiceによって使用されるURIのオブジェクトを構築するために必要な、::解決()nsACStringにconst参照を取ります。そして、それのいずれかの具体的な実装 のために、私は(私はそれを 権利を理解していれば、私はTECHINCAL の理由で動的にリンクべきではないことができませんxpcomglue、とリンクする必要があり、同じように見える、と私は静的にリンクすることはできません法的にはxpcomglue_s の理由)。

したがって、ブラウザプロキシをxpcomglueにリンクせずにどのように取得できますか?

答えて

2

これは間違いなく難しい質問です。実際、NPN_GetURL/NPN_PostURL形式のNPAPI関数を可能な限り使用するのが最善の方法です(可能な場合)。それが不可能な場合は、最近のブラウザのバージョンに頼ることができない限り、あなたは多かれ少なかれ小川を上っています。

最新のバージョンのFirefox/gecko APIを前提とすることができます(Firefox 3.6ではこれがサポートされていますが、どのバージョンが起動しているかはわかりませんが、docsはgecko SDK 1.9と言いますが、指定したURLのプロキシ情報を取得するには、NPN_GetValueForURLとNPNURLVProxyを使用できます。

また、これは新しいブラウザでのみ機能し、まだサポートしているものについては互換性マトリックスをコンパイルする機会がなかったことに注意してください。私はこれをFireBreathに追加する予定ですが、それを1.4にすることはできませんでした。

フェールオーバーオプションとして、これが利用できない場合の最も一般的な解決策は、WinInet(Internet Explorer)のプロキシ設定を取得し、それが同じであることを信頼することです。

これは本当に良い修正なしに(IMO)重大な問題です。これは、Flashが悪意を持ってプロキシを介してネットワークアクセスをしていることで知られています。

+0

ありがとう!私は_3をターゲットにすることができる_think_だから、それはまさに私が求めていた答え(あなたの答えを投票する "評判"を持っていない)です。 – rincewind

+0

あなたはまだ正しい答えとしてマークすることができるはずです=] – taxilian

+0

何かの理由で1.9.1が1(NPERR_GENERIC_ERROR)を返します... – rincewind

0

XPCOMを使用するNPAPIプラグインは開発しないでください。 Mozilla's docsを参照してください。おそらく、あなたがしようとしていることの少なくとも一部のためにFirefoxの拡張機能を使用し、JSバインディングを使用してプラグインとの間で通信することができます。

+0

なぜですか? npruntime経由でプラグインスクリプトを公開していますが、私はまだXPCOM経由でmozillaサービスを呼び出すことができると思いました。 – rincewind

+0

は、Firefox、Safari、OperaなどFirefox以外では動作しないため、 – taxilian

+0

が表示されます。さて、私は今のところそれを残す必要があります。 – rincewind

関連する問題