勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

クロスドメイン突破をjavascriptで行う

   2014/07/02  JavaScript

ajaxとかでクロスドメインを突破する際は、
PHPファイルを介すかJSONPを使うが、
javascriptだけで行った場合どうなるのかメモ。

■参考サイト
http://www.albert2005.co.jp/study/javascript/ajax.html

■実験
Bサーバーにcloss.jsという名前で
callback({"num":[1,2,3], "abc":["a","b","c"]})
だけ記述してアップ。

Aサーバーで
<script>
var script = document.createElement('script');
script.src="Bサーバーにアップしたcloss.js";
window.callback = function(data){
cross (data);
}
document.body.appendChild(script);

function cross (data) {
for (var i = 0, len = data.num.length; i < len; i++) {
console.log(data.num[i]);
} //1,2,3が出力される
for (var i = 0, len = data.abc.length; i < len; i++) {
console.log(data.abc[i]);
} //a,b,cが出力される
}
</script>
とするとコンソールログに出力される

■どうなっているのか?
単純に外部スクリプトを読み込んで、外部スクリプトで定義されている
グローバル変数とか関数を入手し、Aサーバーで出力させている。

確かに外部スクリプトの読み込みであれば、クロスドメインだろうが
なんだろうが読み込める。

その後に関数とか変数を主サーバーで扱えるというのが知らなかった。

■その他
document.createElement(name)
http://www.marguerite.jp/Nihongo/WWW/RefDOM/createElement.html

appendChild
http://www.marguerite.jp/Nihongo/WWW/RefDOM/appendChild.html

 - JavaScript

  関連記事

CKEditor5(WYSIWYGエディタ)に画像アップロード機能を追加する方法

CKEditor5(ウィジウィグエディタ)に画像アップロード機能を追加したい。公 ...

leaflet.jsとOSMでマップ表示及びマーカー設置方法

GoogleMapAPIを用いたマップ及びマーカー表示にクレジットカード登録が必 ...

jQueryでHTMLの特定要素をループ時に逆順で処理する方法

jQueryでリスト(li)タグ等の特定要素をeach()でループ処理する場合、 ...

ブラウザの広告ブロッカーを検知し、ブロックしている場合は何らかの処理を行う方法

普段何らかのサイトを見る際はAdBlock等の広告ブロッカー系プラグインを導入し ...

JavScriptでalertを閉じた後にページ遷移させる方法

JavaScriptのalertが閉じたらページ遷移させてほしいと言われ、con ...