Ajaxはセキュリティ上の理由によりクロスドメイン通信が制限されている。つまりJavaScripコードを呼び出したサーバサイト以外のサーバサイト上にあるファイルには直接アクセスできないようになっている。 そこで外部にあるサーバからサービスを受ける場合には次に示す二つのいづれかの方法を用いる。
- 同じドメインサーバにプロキシ(代理)を用意して、プロキシから外部サーバにアクセスしてその結果を得る。
- JSONPを用いる。JSONPは<script>タグであれば、外部サーバからもスクリプトを読み込める機能を利用したしくみで、外部サーバでJSONPによるサービスを実施している場合に利用できる。 JSONPは、ボタンクリックなどのイベントが発生したタイミングで、外部サーバのスクリプトを<script>タグを生成する。外部サーバは<script>タグを介してJSONデータを含んだ関数呼び出しのコードをクライアントに応答する。あとは、外部サーバの指示に応じて呼び出されるべき関数をクライアント側に用意しておけば、外部サーバから送信されたJSONデータを処理できる。