非同期クロスドメイン通信でCookieを送信したかった
2011年3月24日
未解決なんでセーブしときます。
IE8だとJSONPででCookieヘッダを送信できない
追記:最後に書きました、これはP3Pポリシーによるブロックでした。
これを、最近のブラウザだと大体実装されている
XMLHttpRequest Level 2 の仕様で解決しようとしたのが始まり。
↓によると、
API側で ‘Access-Control-Allow-*’ なヘッダを設定してやると、出来るらしい。
しかし、出来ない
クロスドメインリクエストまでは出来たけど、
Cookieヘッダの送信までは出来なかった。
ということで、参考にしたサイトややったとこなどのメモを残す。
IE8+jQueryによるクロスドメイン通信とXDomainRequestラッパーの作成
※標準jQueryはIE8のXDomainRequestに対応してないので、その対応方法
※これと、Access-Control-Allow-* なヘッダを調整することで、
Cookieの送信以外は、IE8 と Firefox で動いた
Access-Control-Allow-Origin試してみた。その2
※FirefoxでもCookieが送信できないので、まずはその解決からと参考にしたサイト
※ここでハマってストップ!
HTTP access control – MDC Doc Center
※本家ドキュメント、日本語版はまだは無い
※ここを読み込めばわかるんだろうけど、ちょっと読んで止めた
Access-Control-Allow-Origin で Firefox の same origin policy を乗り越える
※同ドメインでもポートが違うとCookieヘッダは送信されなかった
http://friendfeed.com/koko1000ban/188b3842/access-control-allow-origin
※Access-Control-Allow-Originは複数指定できないみたい(未確認)
※これも未確認だけど、’*’ だとダメなこともあるらしいので、
そうだとすると、複数指定できないのがネックになることも有り得る
Ajax – Goodbye, JSONP. Hello, Access-Control-Allow-Origin
※直接関係ないけど、XMLHttpRequestやXDomainRequestのわかり易いサンプルで
そもそも
冷静さを失っていました・・・。
何でヒットしねーんだろ?
Cookieヘッダが送れない件が一向にヒットしないのは何故なんだろう?
大幅に間違えてる気がスル
追記:大幅に間違えてました
→ IEでクロスドメインのiframe内のcookieが取れない
API側でSet-Cookieをするときに、P3Pヘッダでポリシーを決めてやればよかったんでした。
その他参考)
P3Pコンパクトポリシーをコピペするのが流行らないことを祈る
※コンパクトポリシーの CAO PSA CUR の解説
@tanabe さんありがとうございます!
・・・これ、アフィリエイトサイトを作るときにやってたわ・・・・・・・・・・・・・。
追記:XMLHttpRequest Level 2 の有用性チェックリスト
- GET, POST に対応しているか
- Cookieヘッダは送れるか
- もし、Access-Control-Allow-Origin: * 指定がダメな状況がある場合、
複数サイトでの利用に対応しているか