5

セットアップは次のとおりです。

  • Firefox (3.x と 4b の両方) とクライアント証明書を含む、適切にセットアップされ、機能する証明書。
  • 別のサブドメインへの XMLHttpRequest() タイプの AJAX 呼び出しを含む Web ページ。
  • 上記のサブドメイン内のカスタム Web サーバーは、リクエストを受け入れ、寛容なAccess-Control-Allow-Originヘッダーで応答し、クライアントの検証を要求します。

問題は、Firefox がリクエストを突然中止することです (とにかく、それは firebug に書かれていることです)。代わりにセットアップを実行するとopenssl s_server、Firefox が実際にはクライアント証明書さえ送信しないことが示唆されます。

140727260153512:error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer
did not return a certificate:s3_srvr.c:2965:ACCEPT

まったく同じセットアップが Chrome で完全に機能し、おそらく Firefox のバグを示唆しています。ただし、 DOM に要素を挿入して ajax 呼び出しを実行すると、意図したとおりに動作するようです...<script>

それで、他の誰かがこれに遭遇しましたか?バグですか?回避策はありますか?明らかに欠けているものはありますか?

4

2 に答える 2

3

単純な XHR リクエストとは対照的に、スクリプトの挿入が機能する理由は、Single Origin Policyによるものです。これはおそらく、Chrome が XHR を許可するのに FF を許可しない理由を説明するでしょう。Chrome は同じオリジンのサブドメイン部分を考慮しますが、FF は考慮しません。

他のドメインからのスクリプトの挿入 (Google アナリティクスが行っていること) は許可されており、この状況を処理する方法の 1 つです。

私のチームがこの状況に対処する方法は、サーバー側のプロキシを介してリクエストを行うことです。

可能であればサーバー側のプロキシを使用することをお勧めしますが、コードが信頼できるソースからのものである限り、スクリプト インジェクション メソッドは問題なく機能します。

あなたの状況を説明するこの記事も見つけました。

于 2010-11-24T13:52:47.673 に答える