ヘルプに入っているプロジェクトで、妙な現象に悩まされた。 JavaのWebアプリで、同じホストにOC4Jで二つのWebアプリを動かしている。 + IE6/7を立ち上げて、アプリ1にログインする。 + もう一つIE6/7のウインドウを立ち上げ、アプリ2にログインする。 + アプリ2でwindow.showModalDialog()を使ってポップアップウインドウを開く。 + 上記ポップアップウインドウ内からtarget="_blank"のアプリ2のURLリンクを開く。 + →このとき、target="_blank"で開かれたウインドウに、アプリ2のCookieが渡らない。 で、一日ほど頭を冷やして冷静にGoogleで検索したら一発でヒットしてすごい哀しい((ヤバイよ、お客に"IEの仕様らしく対応を直ぐには取れないので、ブラウザは1つだけ立ち上げるようにして下さい"って言っちゃったよ。恥ずかしい・・・))。 ・The cookie may be lost when a window is opened from a modal or modeless HTML dialog box in Internet Explorer 6 http://support.microsoft.com/kb/831678/en-us 「IEの仕様」であることは確かだが、回避方法も上記KnowledgeBaseに載っている。 まずshowModalDialogをするときに第二引数に元のアプリのwindowオブジェクトを渡す。さらにpopupウインドウ内からdialogArguments経由で取得されたwindowオブジェクトを使って、open()でウインドウを開く。 KBに掲載されているのはASPコードだが、お好みの言語で簡単に確認できる。自分の場合はPHPコードで簡単に確認できた。確かに、showModalDialogに渡されたwindowオブジェクトのopen()であれば、元ウインドウのCookieが正常に引き継がれた。 PHPサンプルコードのzip : [[添付ファイル/2008/12/13/021722/kb831678_php_sample.zip]]