凪瀬 Blog
Programming SHOT BAR

目次

Blog 利用状況
  • 投稿数 - 260
  • 記事 - 0
  • コメント - 46605
  • トラックバック - 192
ニュース
広告
  • Java開発者募集中
  • 経歴不問
  • 腕に自信のある方
  • 富山市内
  • (株)凪瀬アーキテクツ
アクセサリ
  • あわせて読みたい
凪瀬悠輝(なぎせ ゆうき)
  • Java技術者
  • お茶好き。カクテル好き。
  • 所属は(株)凪瀬アーキテクツ
  • Twitter:@nagise

書庫

日記カテゴリ

 

明けましておめでとうございます。書初めが遅くなってしまいました。
今年もマニアックな話題でわかる人にだけニヤリとして貰おうと考えています。

IEでセッションが突如切れるバグ

http://support.microsoft.com/kb/315713
http://support.microsoft.com/kb/935778/ja

条件が複雑なのですが、

以下の条件をすべて満たす場合、Internet Explorer で保持するべきはずのセッション cookie が失われます。
  • Internet Explorer 5.5 以降を使用している
  • セッション cookie を使用している(cookie に有効期限が設定されていない)
  • ローカルファイルを使用している (ホームページを c:\homepage.html や \\server\share\homepage.html にしている、file:// で始まる URL を使用している、など)
  • 新しいウィンドウを開く(ウィンドウの数を増やす)ような操作を行っている (window.open や window.showModalDialog で子ウィンドウを開く、リンクを [新しいウィンドウで開く] など)
  • ウィンドウを閉じる(ウィンドウの数を減らす)操作を行った後、残りウィンドウの数が 1 つ(または 0)になった

といった条件で発生します。

説明によると、ウィンドウのカウントを誤るらしく、ウィンドウが残り1個になった時点で 0個と誤ってセッションをクリアしてしまうようです。
なんだかすぐに対応できそうなバグに思えますが、IE5.5 → IE6 → IE7の2度のメジャーバージョンアップを 乗り越えて生き続けるバグですから、何か根深いものでもあるのでしょう。

通常、リンクミスでもない限り、WEBシステムでローカルのファイルを使うことはないわけですが、 どうやら、ブラウザのキャッシュが表示される条件下では「ローカルファイルを使用している」が 満たされてしまうようです

回避策としては

  • cookie に有効期限を設定する
  • HTML ファイルをローカルに置かせずに HTTP サーバー上に置く
  • ウィンドウを閉じないで残しておくか、ダミーのウィンドウを開けておくようにする

といったものが挙げられていますが、システム側の対抗手段としては採用しにくいですね…。

IE7ではパッチがあるようですが、ホットフィックスとなっています。 私のほうでは適用しての検証を行っていません。

投稿日時 : 2008年1月9日 14:26
コメント
タイトル
名前
Url
コメント