HTTPサーバーとWeb開発

101. クロスドメインとは

最近では、Webアプリケーションの開発を行う上で、Ajaxはあたりまえのように使用される
クライアントサイドの技術になった。
この技術により、次のようなことが実現することができ、今までにないリッチなWebアプリケーションを
開発することが可能になった。

しかし、Ajaxを使用する上で必ず考慮すべき点がある。それがクロスドメインの制約である。
クロスドメインとは、下記のようにAサーバーから既に読み込んだWebページ上より、
異なるドメインのサーバー(Bサーバー)に Ajax(XMLHttpRequest)を用いてデータアクセスを行なうと、
ブラウザーのセキリュティーエラーが発生しAjax通信を行なうことができないという問題がある。

- クロスドメイン制約の回避方法 -

このクロスドメインの問題を解決するために以下の手法がある。

【 Proxy CGIの使用 】

同じドメイン(Aサーバー)から別ドメイン(Bサーバー)のデータを取得するために
AサーバーにCGI(Proxyの役割)を作成し配置する。そのCGIより Bサーバーのデータを取得し、
取得データをAサーバーよりクライントに返すという仕組みである。

【 JSONの使用 】

上記では、Proxyの役割となるCGIを作成しクロスドメインの制約を回避し、
異なるドメインのデータを取得する方法を紹介したが、CGIを作成する手間がある。
そこで JSON というものがる。
JSON[JavaScript Object Notation] とは、JavaScriptの派生したサブセットであり、
言語というよりも、データ交換を行なうためのデータ記述形式のことである。

要するに、Ajax(XMLHttpRequest)では異なるドメインにリクエストを行なうことが
できないので、代替手段として外部JavaScriptファイルを呼び出す方法で、異なるドメインの
CGI または静的な JSONファイルをリクエストするのである。
これによりクロスドメイン制約を回避することが可能になる。