Javascriptからリクエストヘッダを設定したクロスドメインなリクエストを発行するにはどうすればよいのでしょうか?
友達に聞かれて全く思いつかなかったのでメモ。勘違いもまじってるかもしれないので、お気付きの方は教えてください。
Javascript使ったAjaxアプリで非同期にHTTPのリクエストを発行して情報をひっぱってくるには
- xmlhttprequestオブジェクト相当のものを使う
- IFrameでごにょっといじる
- Scriptタグを動的に生成してブラウザに動的にevalさせる
の三つの手段がある。
IFrameやScriptタグ生成ではリクエストのURLしか指定できないので、リクエストヘッダに細工したい時はxmlhttprequestオブジェクトを使ってsetRequestHeaderでリクエストヘッダを設定してやるしかない。ところが、xmlhttprequestではクロスドメイン越えには制約があって、要はそのページがおいてあるドメインにしかリクエストが発行できない。
というわけで、クロスドメイン越え かつ リクエストヘッダ設定 を両方やろうとすると選択肢がなくなって困ったという話。可能な方法ってあるんだろうか。
そもそもIFrameやScriptタグ動的生成でクロスドメインがのりこえられるってのがちょっと危険な匂いが漂うしなあ。どうなんだろ。
情報を取得したいドメインのサイトを開いといて、ブックマークレットでJavascript起動してその上で全部まかなうってのはできそうだけど、それはしたくないんだよなあ。複数のサイトからは情報ひっぱれないしなあ。あ、Flash経由っていう手もあるのか。でもあれも情報の取得先に許可ファイルみたいなの置いてもらわないと駄目か。
うーん。やっぱCGIかなんかでプロキシーかませって話になるのかなあ。