クロスドメインAjax

通常、ajax通信は同一ドメイン内でしか行えない。自サーバーのphpスクリプトなどを実行し動的に結果を取得するのに使われる。
しかし、ドメインを飛び越えてajaxを動作させる方法があるらしい。jquery.xdomainajax.js というスクリプトを使用する。

jquery.fn/cross-domain-ajax at master · padolsey-archive/jquery.fn · GitHub

公式サイトより抜粋

$('#container').load('http://google.com'); // SERIOUSLY!
$.ajax({
url: 'http://news.bbc.co.uk',
type: 'GET',
success: function(res) {
var headline = $(res.responseText).find('a.tsh').text();
alert(headline);
}
});
// Works with $.get too!

マジで!?URL入れるだけじゃん!?楽勝すぎる!しかも返ってくるのはjQueryオブジェクトなんだから、DOM操作もセレクタを使ったデータ収集も楽勝じゃん!

GitHubのコードを見ると、タネはYQLというYahoo.comのAPIを使っていることらしい。

       YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
query = 'select * from html where url="{URL}" and xpath="*"';

つまり米Yahoo様の力を借りて、プロキシ的に他のサイトのデータをゲットしてしまうというわけなのか。リソースと金が余りまくってる会社の力を借りるのなら罪悪感はないね。採用決定!!
クロスドメインAjaxを使用する最大の利点は、回線や処理の負荷をクライアントに肩代わりしてもらう(悪い言い方をすれば、ユーザに押し付ける)ために、サーバーの負荷が大幅に軽減できるということ。レンタルサーバーを使っていても、転送量を気にすることなく他のサイトのhtmlを拾ってくることができる。これはとてもありがたい。


コメントを残す

メールアドレスが公開されることはありません。