インラインフレームを使った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