6

CORSとクロスドメイン メッセージングは​​、私には同じように見えます。つまり、ドメイン間の通信が可能になります。

どちらか一方を使用する理由はありますか?

4

3 に答える 3

10

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

クロスドメイン メッセージングを使用すると、異なるオリジンからのドキュメント内の iframe と通信できます。たとえば、YouTube ビデオの iframe がある場合、その iframe にメッセージを渡して音量を変更できます。iframe のオリジンが異なるため、通常は通信できません。そのため、YouTube の iframe をプログラムで操作することはできません。

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

実際の例:

1.YouTube プレーヤーを含む iframe があります。

2. YouTube データ API (CORS、JSONP、XHR など) から再生するビデオをリクエストします。

3. クロスドメイン メッセージを iframe に渡して、手順 2 でリクエストした動画の再生を開始します。

于 2011-11-18T17:50:40.093 に答える
1

まず、CORS が次のブラウザーでサポートされていることに注意してください: Internet Explorer 8 以降、Firefox 3.5 以降、Safari 4 以降、および Chrome。IE7 およびそれ以前のバージョンの Firefox および Safari では、まったくサポートされていないことに注意してください。ただし、イベント IE8 にはいくつかの制限があります。サーバーに送信される資格情報と「プリフライト」リクエストはサポートされていません。さらに、サーバーは CORS リクエストの準備ができている必要があります。つまり、サーバーでいくつかの追加作業も実行する必要があります。

JSONP または iFrame を使用したクロスドメイン メッセージングは​​、ブラウザー サポートの点でより普遍的であり、追加のサーバー側の作業を必要としない場合もあります。

于 2011-11-18T17:53:39.413 に答える