ajaxクロスドメイン制約

Ajaxのクロスドメイン制約

ソーシャルアプリからの画像アップロードを行いたくて
jquery.uploadで写真のアップロードについて調査。

mixiアプリ上で実装する場合
gadget.xml上に設置したhtml上にinnerHTMLを使って

http://xxxx/upload.php にレスポンスを投げると
permission to get property HTMLDocument.ownerDocument

のようなエラーが返って来る。
※同じドメイン上に設置するとすんなり動く。

これはAjaxのクロスドメイン制約によるもので
XMLHttpRequestではクロスドメインアクセスが完全に禁止されている。
http://thinkit.co.jp/article/70/3?page=0,0 (原理)
http://d.hatena.ne.jp/tkng/20100918/1284792040 (駄目な理由)

web_server another_web_server
html ×----ajax------> web API

Ajaxで別ドメインのサーバーにはアクセス不可

解決方法はあるみたいだが、どうしよう。。

★node.jsを勉強する

phpcgiを使用

flashを使用

(
crossdomain.xmlに設定
<cross-domain-policy>
 <allow-access-from domain="www.securesky-tech.com" />
</cross-domain-policy>
)

jsonpを使用(jQuery はバージョン 1.2 から JSONP 呼び出しをネイティブ・サポート)

★XHR level 2で書き換える>対応ブラウザに制限

OpenSocialコンテナによるプロキシを使う
mixi側ではプロキシを提供しているので
http://gihyo.jp/dev/serial/01/opensocial/0006?page=2
gadgets.io.makeRequest
を使って同じサーバーになりきり