0

【IE6】facebookページからinframeで読み込んだアプリがCookieを受け付けない現象

変な日本語だな。
facebookアプリを作っていているドキュメントは古いわ、仕様は急に変わるわで、日本のソーシャルアプリをやってる感覚でやってると痛い目にあいます。
試行錯誤を繰り返し開発中に一つ大きく嵌まったのが、IE6でログイン状態がとれない。
普通のアプリを動かしてる場合は問題ないけど、アプリをfacebookページのiframeで読みこんで動かしてる時に発生する。
この状況で、ログイン状態がとれない→sessionが使えてない→Cookieが使えてないと気付くまでが長かった。

IE6はデフォルトだと、自分以外のドメインから来た Cookie は受け入れないようになっています。
確かに受け入れると危険だなーと思う気もするけど、iframeの内と外が別ドメインの場合困った事になります。
解決方法は、明示的に自分以外のドメインからのCookieも受け入れるようにヘッダーに情報を付与する事です。

phpだと、
header("P3P: CP='UNI CUR OUR'");
のようにすれば、Cookieを読み込めるようになります。

P3PというのはW3Cの仕様です。IE6、こういうところはW3Cの仕様に準拠してるんですね。
CPが「コンタクトポリシー」の略。
他にも、”NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI”ってのがあります。
今回、ヘッダーに埋め込んだ3つは、以下の通りです。

UNI
個人を識別するために生成されるID

CUR
情報は、情報提供や通信、双方向サービスなど、利用者がそのために情報を与えたところの活動を遂行するために、サービス提供者によって利用されるかもしれない。

OUR
当組織または当組織の業務を委託している法人やサイトの運営者

facebookアプリは色々嵌りポイントがあるけどとりあえずはこれ。

大阪のWEB屋です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です