クロスドメインの問題について

Javascript

今回はクロスドメインの問題について話します。

クロスドメイン問題とは

あるドメインで読み込まれたHTMLページから、Javascriptなどブラウザ上で動作するプログラミング言語によって、異なるドメインのサービスに接続するとブラウザがエラーや警告を表示することがあります。

以下の条件になったら、クロスドメイン問題が発生します。
・プロトコルが違う場合
・ドメインが違う場合
・ポート番号が違う場合

クロスドメイン解決策

CORSの設定による、解決

この方法はサーバサイドでの設定が必要です。サーバやサーバ側に変更できる環境の場合にお使いください。
設定方法:
レスポンスのヘッダに以下の内容を設定すれば、問題が解決できる。

Access-Control-Allow-Origin: *

JSONPとして扱う

JSONP (JSON with padding) とは、scriptタグを使用してクロスドメインな(異なるドメインに存在する)データを取得する仕組みのことである。 HTMLのscriptタグ、JavaScript(関数)、JSONを組み合わせて実現される。

使用例:

HTMLコード「URL:http://127.0.0.1:8080/index.htm」

<script>
    function getData(data) {
        console.log(data);
    }
</script>

<script src=”http://127.0.0.1:8000/getData?callback=getData“></script>
サーバ側以下の内容を返す(node.js)
res.end(urlObject.query.callback+'(‘+123+’)’);
 
テストすると、ちゃんと123のデータを出力された。
タイトルとURLをコピーしました