js_javascript スキルでクロスドメイン アクセスを実現する 3 つの方法

WBOY
リリース: 2016-05-16 15:26:51
オリジナル
1699 人が閲覧しました

JavaScript のクロスドメイン アクセスは、Web 開発者がよく遭遇する問題です。クロスドメインとは何ですか? あるドメインにロードされたスクリプトが別のドメインのドキュメント属性を取得または操作する JavaScript クロスドメインを実装する 3 つの方法を以下に示します。 :
1. iframe に基づくクロスドメイン実装
iframe に基づくクロスドメイン実装では、2 つのドメインが aa.xx.com、bb.xx.com の特性を持つ必要があります。つまり、2 つのページが基本ドメインに属している必要があります (たとえば、両方とも xxx.com)。 com、または xxx .com.cn) では、同じプロトコル (たとえば、両方とも http) と同じポート (たとえば、両方とも 80) を使用して、両方のページに document.domain を同時に追加します。子ページを呼び出す親ページの機能を実現できるコードは次のとおりです:
ページ 1:

<html> 
<head> 
 <script> 
  document.domain = "xx.com"; 
  function aa(){ 
   alert("p"); 
  } 
 </script> 
</head> 
<body> 
  <iframe src="http://localhost:8080/CmsUI/2.html" id="i"> 
   
  </iframe> 
  <script> 
 document.getElementById('i').onload = function(){ 
   var d = document.getElementById('i').contentWindow; 
   d.a(); 
    
 }; 
  </script> 
 </body> 
</html> 
ログイン後にコピー

ページ 2:

<html> 
 <head> 
 <script> 
  document.domain = "xx.com"; 
  function a(){ 
  alert("c"); 
   } 
 </script> 
 </head> 
 <body> 
 </body> 
</html> 
ログイン後にコピー

この時点で、親ページは子ページの関数を呼び出して、JS クロスドメイン アクセスを実現できます
2. スクリプトタグに基づくクロスドメイン実装
スクリプト タグ自体は他のドメインのリソースにアクセスでき、ブラウザーの同一オリジン ポリシーによって制限されません。コードは次のとおりです。

var script = document.createElement('script'); 
script.src = "http://aa.xx.com/js/*.js"; 
document.body.appendChild(script); 
ログイン後にコピー
この方法では、スクリプト タグを動的に作成することで他のドメインの js ファイルをロードでき、ロードされた js ファイルの関数をこのページから呼び出すことができます。この欠点は、他のドメインのドキュメントをロードできないことです。 、js ファイルのみがこの方法で実装されます。jsonp はコールバック パラメーターを他のドメインに渡し、他のドメインのバックグラウンドを介してコールバック パラメーターの値と json 文字列をパッケージ化して返します。 scriptタグ、ブラウザ 返された文字列はJavaScriptに従って解析・実行され、ドメイン間のデータ送信を実現します。

jquery での jsonp のサポートもこのソリューションに基づいています。

3.バックエンドプロキシメソッド この方法では、すべてのクロスドメインの問題を解決できます。つまり、バックエンドがプロキシとして使用され、他のドメインの各リクエストがこのドメインのバックエンドに転送されます。このドメインのバックエンドは、http リクエストをシミュレートすることによって他のドメインにアクセスします。フロント デスクにとって、これの利点は、アクセス対象がドキュメントであっても js ファイルであっても、クロスドメインでアクセスできることです。

js でクロスドメイン アクセスを実現する上記の 3 つの方法を最初に説明します。注意深く勉強すれば、必ず何かを得ることができます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート