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);
jquery での jsonp のサポートもこのソリューションに基づいています。
3.バックエンドプロキシメソッド
この方法では、すべてのクロスドメインの問題を解決できます。つまり、バックエンドがプロキシとして使用され、他のドメインの各リクエストがこのドメインのバックエンドに転送されます。このドメインのバックエンドは、http リクエストをシミュレートすることによって他のドメインにアクセスします。フロント デスクにとって、これの利点は、アクセス対象がドキュメントであっても js ファイルであっても、クロスドメインでアクセスできることです。