16

IE8 で Microsoft の XDomainRequest オブジェクトを使用するコードがあります。コードは次のようになります。

var url = "http://<host>/api/acquire?<query string>";  
var xdr = new XDomainRequest();  
xdr.onload = function(){  
    $.("#identifier").text(xdr.responseText);  
};  
xdr.open("GET", url);  
xdr.send();  

「url」のスキームが「http://」の場合、コマンドは正常に機能します。ただし、スキームが「https://」の場合、IE8 で「アクセスが拒否されました」という JavaScript エラーが表示されます。どちらのスキームも FF 3.6.3 で正常に動作します。もちろん、私は XmlHttpRequest を使用しています。両方のブラウザで、W3C Access Control に準拠しています。「http://」は、両方のブラウザでクロス オリジンとして機能します。したがって、問題は IE8、XDomainRequest、および SSL にあります。

SSL 証明書は問題ではありません。<hostIE8 のアドレス バーにhttps:// >/ と入力<hostすると (> は上記の「url」と同じ)、ページが正常に読み込まれます。

したがって、次のようになります: -ブラウザから直接
https:// >/ を押すと問題なく動作します。 - https:// >/api/acquire にアクセスしますか? > XDomainRequest 経由は許可されていません。<host
<host<query string

それはできますか?私は何かを忘れていますか?

4

1 に答える 1

18

どうやら、答えはここにあります: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

このページのポイント 7 には、「リクエストは、ホスティング ページと同じスキームをターゲットにする必要があります」と書かれています。

ポイント 7 をサポートするテキストの一部を次に示します。

「HTTPS ページが HTTP ベースのリソースに対して XDomainRequests を作成しないようにすることは、間違いなく私たちの意図でした。そのシナリオは、多くの開発者とほとんどのユーザーが理解していない混合コンテンツ セキュリティの脅威を提示するためです。

ただし、HTTP ページが HTTPS ページを対象とする XDomainRequests を発行するのを防ぐため、この制限は広すぎます。HTTP ページ自体が侵害された可能性があることは事実ですが、公開リソースを安全に受信することを禁止する理由はありません。」

現時点では、私の最初の質問に対する答えは次のように思われます。ホスティング ページで「https://」スキームを使用できる場合は、はい。いいえ、できなければ。

于 2010-06-08T18:26:17.810 に答える