Hebikuzure's Tech Memo

2008年10月19日

ローカル HTML ファイルを使用するとセッション Cookie が失われる

Filed under: Internet Explorer — hebikuzure @ 8:38 AM

MSKB 315713
[IE55][IE6] ローカル HTML ファイルを使用するとセッション Cookie が失われる
http://support.microsoft.com/kb/315713/ja


もう一つ Internet Explorer の Cookie 関係の問題について。

Web アプリケーションなどセッション Cookie を使用してセッションやユーザー状態の管理を行っている場合、特定の条件下で意図せず Cookie が失われる場合がある。この現象について KB 315713 で解説されている。現象は以下の条件で発生する。

  • Internet Explorer 5.5 以降
  • cookie に有効期限が設定されていない (セッション Cookie として使用している)
  • Cookie が発効される Web ページにナビゲートする前にローカルのファイルを使用している
    (例えば http:// スキームではなく file:// スキームや UNC パスのページをホーム ページにしている、など)
  • 新しいウィンドウを開く (ウィンドウの数を増やす) ような操作を行う
    (window.open や window.showModalDialog で子ウィンドウを開く、リンクを [新しいウィンドウで開く] 操作をする、など)
  • ウィンドウを閉じる(ウィンドウの数を減らす)操作を行った後、残りウィンドウの数が 1 つ(または 0)になる

また回避策も KB に記載の通り、上記の条件に合致しないような工夫をする事になる。

KB に書かれているように、ローカル ファイルを使用すると IE 内部のセッション カウンタが不正になるためこの現象が発生している。Web アプリケーションでは子ウィンドウを開いて閉じる動作がよく行われるので、この現象の影響を受ける事が少なくない。

この現象の修正は Internet Explorer 6 SP1 で行われていたのだが、Internet Explorer 7 にはレグレッションがあり、現象が発生してしまう。

Session cookies may be lost after you open a file that has a local file path or a UNC file path in Internet Explorer 7
http://support.microsoft.com/kb/935778/en-us

この問題にも KB 935778 に記載されているように修正プログラムが公開されているが、実際には Windows Vista SP1 にも含まれている。 XP や Windows Server 2003 の場合は別途修正プログラムの請求が必要だ。また修正プログラム (または Vista SP1) の適用後、935778 に記載されているレジストリの設定を行う必要もある。

Hotfixes and Security Updates included in Windows Vista Service Pack 1
http://technet.microsoft.com/en-us/library/cc749061.aspx

KB の公開より後日に修正プログラムが公開されたり、それがサービスパックに含まれたりした場合に KB をメンテナンスするのは (公開されている KB や修正の数を考えると) 大変とは思うが、やはり現象についての KB に公開済みの修正の情報が欠落しているのは感心できない事である。

広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。