六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

クロスドメイン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を拾ってくることができる。これはとてもありがたい。