リスティング広告代行の専門会社|Yahoo!プロモーション広告・Google AdWords完全対応|東京・大阪・名古屋

Ajaxのクロスドメイン制約


Ajaxについては以前にも簡単にご紹介しました

簡単に言うと、JavaScriptのXMLHttpRequestという組み込みクラスを利用して、すでに読み込んだページからさらにHTTPリクエストを発行することによってページ遷移なしでページの一部を動的に書き換える技術のことです。

何かと便利なAjaxですが、実はセキュリティ上の理由から、ドメインをまたぐ通信は出来ないようになっています。XMLHttpRequestクラスの「同一生成元ポリシー(Same-Origin-Policy)」によるものですが、俗にAjaxのクロスドメイン制約などと呼ばれます。

つまり、

ドメインA上のページからドメインA上のページにAjaxでアクセス → OK
ドメインA上のページからドメインB上のページにAjaxでアクセス → NG

というわけです。

JSONPという例外

ただし、例外的にクロスドメインでAjaxを利用できる方法があります。それが、JSONPを使う方法です。

JSONPとは、JSONデータを引数に取るような関数のコールバックコードをサーバから受け取り、script要素のsrc属性を使ってインポートするというものです。これは、script要素によって外部のJavaScriptファイルをインポートする場合には別ドメインのファイルが参照可能という仕様を利用してクロスドメイン制約を回避する技術です。

当然のことながら、JSONPによってクロスドメインAjaxが使用できるのは、Ajaxで通信したい相手のWebサーバがJSONP形式の文字列を返すよう実装されている場合のみです。

まとめ

クロスドメインでAjax通信したいシーンはそう珍しくないと思いますが、セキュリティ上の理由から主要なブラウザには基本的にクロスドメイン制約が掛かっています。

状況によってはJSONPを上手く使えば問題を解決できるかも知れませんので、覚えておいて損はないと思います。



業界初のリスティング広告運用総合支援ツール Lisket(リスケット)

Facebookもチェック