Archive for 2012/10/17

Cross-Domain上でajaxを使いたい場合の考慮ポイントを自分なりにメモ用にまとめてみました。

まず、Cross-Domainで大きな判断材料となるのが、GETだけでいけるか?でしょう。
GETだけであれば、JSONPでOKです。
JSONが明らかにajaxっぽいですが、JSONPでやっているのは、動的なscriptタグの記述とその実行なので手法が全然違います。
なので、できる事が似ていても制限が違ってしまうのです。

さて、次にブラウザがFirefoxのみでいいとか、Chromeのみでいいとか、IE8以上ならいいとか、テスト利用だからとか、ある決まった人しかつかわないし・・・みたいな理由でブラウザをできた確認ベースでいいのでしたら・・・

さらに、自分でサーバ側のヘッダがいじれるのでしたら・・・

ここのドキュメントを参考にするといいでしょう。
日本語でガイドライン的なものを読みたい方はこちらの方がいいかもしれません。
下に書く内容の意味がもっと細かく記述してあります。
(なので、この記述がない部分を乗せることにします。)

Access-Control-Allow-Origin
 Access-Control-Allow-Origin: *

のように記述すると、どこのサーバ(から取得したコンテンツ)からも、リクエスト出来るようです。
ただし、ローカルのhtmlファイルからアクセスしようとすると出来ません。

これでいいのか、わかりませんが、Firefoxのヘッダを見ると Originヘッダにnullが設定してありましたので、
その通り記述してみたら、ローカルファイルからのajaxでもFirefoxではいけました。

 Access-Control-Allow-Origin: null

ただし、このように記述すると、通常のサーバからが出来なくなってしまいます。
また、どうやら、複数の指定をすることができないようなので、
ここは、Originヘッダに書いてあるものをそのまま、受け入れるようにすれば、事実上”*”と記述していることと同じになります。

Access-Control-Allow-Credentials

次に、このヘッダについてです。
実は、この指定が無い場合のリクエストにset-cookieを取得しているのにcookieを設定してリクエストしていません。

Access-Control-Allow-Credentialsn: true

とすればヘッダは終了です。
XMLHttpRequest側でXMLHttpRequest側にも設定が必要です。

クライアント側はここに記述があるので一読しておくことをお勧めします。

ここまでやって、再度、こちらを読めば、
これ以外の制約などもわかってくることかと思います。

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2012年10月
« 9月   11月 »
1234567
891011121314
15161718192021
22232425262728
293031  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ