風柳メモ

ソフトウェア・プログラミング関連の覚書が中心。

IE(Trident)でクロスサイトのHTTP-Request時にCookieを送らない件

はてなスターを付けるだけで自分のTwitterにつぶやくサービス(?) - 風柳メモ』ではまったんだけれども、Sleipnir(Trident)にて★のオススメの画面で認証設定した後で、他サイトに行って★を付けても、共通のTwitterの方に投稿されてしまう。
何故なのかを調べたけれどなかなかわからず……。

★のオススメの仕組みとしては、設定画面で認証設定を行ったら "domain=twithook.appspot.com; path=/;"の条件で認証用の Cookie を覚えさせ、以降、スターを付けると同時にtwithook.appspot.com への HTTP Request を発生させて、そのときの一緒に送られる Cookie を参照する……ようにしているはずなのだけれど、Sleipnir では外部サイトからでは何故か送られない(Firefoxでは問題無し。設定画面自身にいる場合は、もちろん Sleipnir でも Cookie が送られている)。

どうやら、プライバシーポリシー関係だというのはわかったのだけれども(試しにIE7のプライバシーポリシーのレベルを最低にすれば送信されたので)、さて、どう対処しよう……と探して見つけたのが次の記事。

IEで別ドメインのiframeを読み込むと、
そのiframe内のcookieが有効にならない。
そーゆーときは、HTTPのレスポンス時リクエスト時のヘッダーに
下記のkey&valueを出力しておけばOKらしい。
("P3P", 'CP="CAO PSA OUR"')

IEでiframe内の別ドメインのCookieを有効にする方法 - satoru.netの自由帳

おそらく同様のことだろうと、Cookie 設定時の Response Headerで同様に設定してみたら、見事うまくいった。

ちなみに、The Platform for Privacy Preferences 1.0 (P3P1.0) Specificationによると、

  • P3P=The Platform for Privacy Preferences
  • CP=Compact Policy

であり、CPのCAO、PSA、OURは

  • CAO:compact-accessの設定で、"for contact-and-other" (サイトはユーザー自身の連絡先情報へのアクセスを提供すること)の意味。
  • PSA:compact-purposeの設定で、"for pseudo-analysis"(解析対象のデータは "擬似解析" されるのみである、つまりデータはオンラインの個人に接続され、物理的な識別情報には接続されないこと)の意味。
  • OUR:compact-recipientの設定で、"for ours"(外部エージェントでの使用を目的にデータが外部エージェントに提供されないこと)の意味。

というポリシーを宣言している、らしいんだけど……うーん、凡人には難しすぎる……。