国境を越えた問題の整理

7746 ワード

クロスドメインは、フロントエンドの開発者が身につけなければならない概念です.この文章はいくつかの基本的な問題から出発して、この概念を理解します.
まず、何がクロスドメインですか?なぜクロスドメインがありますか?
ドメインをまたぐという言葉は文字通りドメイン名にまたがるという意味ですが、実際にはドメインをまたぐ範囲は決して狭くないです.具体的な概念は以下の通りです.プロトコル、ドメイン名、ポートにはどのような違いがあるかによって、異なるドメインとして扱われます.ですから、もしあなたのバックエンドがNODEJSを使っていたら、ポートの設定はデフォルトの3000を採用しています.それともクロスドメインが発生します.クロスドメインという問題が発生したのは、外部の文書を勝手に引用すれば、異なるラベルの下のページで類似のファイルを引用して、ブラウザがばかになりやすく、安全も保障されなくなるということが分かりやすいからです.何事も安全第一ですよ.しかし、セキュリティ制限と同時にiframeやajaxアプリケーションにも多くの迷惑をかけています.したがって、一部の方法により、ドメインのjsが他のドメインのページオブジェクトを操作できるようにするか、または他のドメインのjsがドメインのページオブジェクト(iframe間)を操作できるようにする必要があります.以下は具体的なクロスドメインの状況を詳しく説明します.

URL                      //               
http://www.a.com/a.js
http://www.a.com/b.js     //          
http://www.a.com/lab/a.js
http://www.a.com/script/b.js //             
http://www.a.com:8000/a.js
http://www.a.com/b.js     //    ,         
http://www.a.com/a.js
https://www.a.com/b.js //    ,        
http://www.a.com/a.js
http://70.32.92.74/b.js //       ip    
http://www.a.com/a.js
http://script.a.com/b.js //    ,        (cookie           )
http://www.a.com/a.js
http://a.com/b.js //    ,      (  )    (cookie           )
http://www.cnblogs.com/a.js
http://www.a.com/b.js //        

じゃ、クロスドメインの方法は何がありますか?
国境を越えるという制限がある以上、私達はどうやって迂回しますか?
1.document.domainを通じてドメインを横断する
前に述べたように、ブラウザには同一ソースポリシーがあり、その制限の一つはajaxの方法で異なるソースの文書を要求することができないことである.第二の制限は、ブラウザの異なるドメインのフレーム間では、jsのインタラクションができません.異なるフレームの間ではwindowオブジェクトを取得できますが、該当する属性と方法は取得できません.例えば、ページがあります.住所は?http://www.damonare.cn/a.html このページの中にiframeがあります.そのsrcはhttp://damonare.cn/b.html明らかに、このページとその中のiframeフレームは異なる領域です.だから、私達はページの中でjsコードを書くことでiframeの中のものを得ることができません.

    function test(){
        var iframe = document.getElementById('iframe');
        var win = iframe.contentWindow;//     iframe  window  ,  window               
        var doc = win.document;//      iframe  document  
        var name = win.name;//        window   name  
    }