dojoのIFrameProxyでクロスドメインでのXML取得
これおもしろいな。
http://dojotoolkit.org/~jburke/XHRIFrameProxy.html
XMLHttpRequestがドメインの壁を越えられないのは悲しい事実。すべてのブラウザで改善されるのを待つのはひどく気の長い話だし、そもそもそうなってるのにはそれなりの理由(セキュリティ関連)があったわけで、うまく要求が通るとも思えない。
そこで、既存の枠組みでクロスドメインの壁を越えられる動的スクリプトロードでのJSONコールみたいなテクニックが出てきてるわけだけど、データソースとなるサーバ側でデータをJSON形式で用意しなきゃいけなかったり、結局JavaScriptロードに頼るので信頼できないサイトからは気軽にデータを取って来れない(⇒任意のJavaScriptコードが実行されてしまう危険性がある)などの問題があった。
IframeProxyはこれを回避する。IFRAMEといっても、ブラウザでXMLHttpRequestが使えないときのAjaxエミュレーションのIFRAMEテクニックとは違うので注意。
これを使えば、データソース側でデータ形式に手を入れる必要はない。呼び出し側にクロスドメインプロキシとなるサービスを設置しておく必要もない。やることは、データソースと同じドメイン内にプロキシ用のHTMLをおいておくだけ。
あえて図にするとこんな感じか。わかりにくいかな。そんなによく見たわけじゃないので多少間違ってるかも。
難点は、フレーム間のデータ受け渡しにURLハッシュを使っているため、URL制限値の影響でデータを分割しなければならず、受け渡しのデータが膨大になると性能はあまり出ないだろうということ。
あと懸念としてあるのは、複数同時リクエストがある場合に破綻したりはしないだろうか?ということ。まあこれは、クライアント側も複数個のフレームに分けてやったりすればよいのかもしれない。
dojoはこの方法による呼び出しも dojo.io.bind に入れるようだ。ScriptSrcIOといい、よくやるね。