人気ブログランキング | 話題のタグを見る
(PHP,IE)インラインフレームで別ドメインのPHP読み込むとセッションが効かない
インラインフレームを使ったWEBサイトを作っています。
このサイトは www.hoge.jp とします。
フレーム内のコンテンツは、www.piyo.com の PHP ファイルです。

この時、フレーム内のPHPでセッション管理しようとしてもできません。
www.piyo.com/login_input.php から www.piyo.com/login_chk.php に遷移してもセッション情報が引き継がれないのです。

これは、IE6以降で現象が発生しました。FirefoxやChromeでは問題なく動きます。


この時、セッション管理はCookieを使ってました。
IE6以降ではこのようなクロスドメイン環境の場合、プライバシー保護のために別ドメイン(サードパーティ)のクッキーは受け入れないようです。

クライアント側のIEのプライバシー設定で、サードパーティ製のクッキーを受け入れるようにすればいいのですが、サイト管理者からはそんなことは言えません。

対策として、PHPでセッション開始したりクッキーを使う前に以下のコードを書けばいいようです。
header("P3P: CP='UNI CUR OUR'");


IEはP3Pに準拠してるようで、P3Pというのはプライバシーポリシーを記述する標準フォーマットらしく、上記のコードを書くことでそれに準拠してるよ みたいなことを宣言するようです。


ちなみに、セッションをCookieに持たすのではなくURLに持たすことでも動きますが、やはりセキュリティ上好ましくないでしょう。

参考:
IEでクロスドメインのiframe内のcookieが取れない/WEBサイト作成の注意点 サイト構築日記
PHP:IE6でサードパーティのクッキーを受け入れるようにする:P3P
サードパーディーのCookie | shinodogg.com
IE 6のプライバシ管理機能 - @IT
by Jehoshaphat | 2012-11-30 23:23 | PHP開発


<< インターフェイスを指定してro... (SQL)テーブル名にハイフン... >>