2011-11-18 6 views

答えて

10

CORSは、通常は許可されないajax要求またはフラッシュ要求用です。たとえば、ドメインxのドメイン間ポリシーがなく、再生のためにそこからmp3ファイルを取得すると、flashはmp3ファイルのid3タグを読み取ることを許可しません。 ajaxの場合、ターゲットサーバーにドメイン間の要求を可能にするクロスドメインポリシーがない場合は、フラットアウトでリクエストを送信できません。

クロスドメインメッセージングを使用すると、異なる原点のドキュメント内のiframeと通信することができます。たとえば、youtube video iframeがある場合、そのiframeにメッセージを渡してボリュームを変更することができます。 iframeの原点が異なるため、通常は通信ができません。そのため、iframeをプログラムで何もできません。

いずれかを使用する理由は明らかになっています。 CORSでは、iframe内にあるが同じオリジンにはないアプリと通信したいときに、メインウィンドウとiframeの間でメッセージをやりとりする間に、別のオリジンのデータを要求することができます。

実施例:

1.Youはユーチューブプレーヤを有するインラインフレームを有しています。

2. youtube data api(CORS、JSONP、XHRなど)から再生する動画をリクエストします。

3.Youは今、あなたがCORSは次のブラウザでサポートされていることを認識しておく必要があり、すべてのステップ#2

1

まずに要求されたビデオの任意の再生を開始するためにはiframeにクロスドメインのメッセージを渡します。 Internet Explorer 8以上、Firefox 3.5以上、Safari 4以上、Chrome FirefoxおよびSafariのIE7およびそれ以前のバージョンは、それをサポートしていません。しかし、イベントIE8にはいくつかの制限があります。これは、資格情報と "プリフライト"要求をサーバーに送信するのをサポートしていません。 さらに、サーバーにCORS要求の準備ができている必要があります。つまり、サーバー上の余分な作業も実行する必要があります。

JSONPまたはiFramesを使用したクロスドメインメッセージングは​​、ブラウザサポートの点でより普遍的であり、場合によっては余分なサーバー側の作業を必要としません。

+0

古いブラウザの場合は、http://flxhr.flensed.com/のようにCORSにFlashを使用できます。しかし、 'postMessage'は最新のブラウザが必要です。 – Esailija

+1

Exporer 8/9のCORSサポートは、他のブラウザと比較して非標準であることが条件です。特に、jQueryは標準CORSをサポートしていますが、Explorerの同等のものはサポートしていません。エクスプローラー10は私には言われても標準CORSをサポートしています。 – hippietrail

関連する問題