ドメイン間ソリューションを知らないかもしれません

2627 ワード

ドメイン間ソリューションを知らないかもしれません
2013-11-18 19:34 by Justany_WhiteSnow,290阅读,0评论,コレクション,編集
ブラウザの同源ポリシーのため、ブラウザがドメインを越えているという問題によく遭遇します.
簡単に言えば、ドメイン間の基本的な解決策は次のとおりです.
  • GETリクエスト用JSONP
  • その他の要求は同源iframeをエージェントとする
  • JSONPの紹介が多いので、ここではあまり話さない.
    同源iframeがエージェントをするのは主にメインウィンドウとiframeの通信問題であり、ここにも同源戦略があるからだ.よくある方法はwindowを使うことです.nameまたはurl paramを介して通信します.しかし、これらの方法はiframeを繰り返しロードして完成する必要があります.資源の消費が高いので、もっと良い案はありませんか.
     
    window.postMessage
    window.PostMessageは最初にIE 8から導入され、主にドキュメント間通信の問題を解決するために、以下のリストをサポートします.
    Feature
    Chrome
    Firefox (Gecko)
    Internet Explorer
    Opera
    Safari (WebKit)
    Basic support
    1.0
    6.0 (6.0) [1] [4]
    8.0 [2] [3]
    9.5
    4.0 transfer  argument
    ?
    20.0 (20.0)
    Not supported
    ?
    ?
    otherWindow.postMessage(message, targetOrigin, [transfer]);

    他のウィンドウ:ターゲットウィンドウ、windowです.framesプロパティのメンバーまたはwindow.Openメソッド作成ウィンドウ
  • message:String、Object(IE 8、9はサポートされていません)
  • のタイプのメッセージを送信します.
  • targetOrigin:メッセージ受信範囲を限定し、制限なしに「*」
  • を使用してください.
     
    メッセージイベント
    ウィンドウのmessageイベントをバインドして、次のような情報を取得します.
    window.addEventListener('message', function (event) {
    
      console.log(event.data);
    
    }, false);

     
    非同源ドキュメント間の通信
    これにより、非同源ドキュメント間の通信スキームが提供されます.ここには簡単な例があります.
    http://html5demos.com/postmessage2
     
    シナリオの基本原理
    基本原理は今では明らかになっていますが、私たちは依然として同源iframeをエージェントとして使用していますが、ホームページとiframeの通信方式はpostMessageを利用して実現されています.
     
    既成案
    IE 8以上のブラウザユーザーのみにサービスを提供している場合(海外プロジェクトでは基本的にIE 6、7が淘汰されています)、これらの互換性の問題を処理したくない場合は、次のような既存のソリューションを選択できます.
    https://github.com/jpillora/xdomain
     
     
     
    分類:
    Javascript
    ラベル:
    Javascript
    HTML5