- PR -

cookieのsessionidが消えてしまう。

投稿者投稿内容
会議室デビュー日: 2004/08/02
投稿数: 9
投稿日時: 2004-08-02 20:55
 クライアントで受け取ったセッションIDがサーバと何度かやり取りしている間に
消えてしまいます。
 特定の画面ではなく、画面を切り替えていると20〜30回に1度発生します。

 document.cookieで値を表示させていると、途中で""になってしまいます。

 サーバからは、ログインの初回だけset-coookieでセッションIDが発生している
だけです。

 原因としてどういったことが考えられますでしょうか?
ぼんじぃ
ベテラン
会議室デビュー日: 2004/05/21
投稿数: 70
投稿日時: 2004-08-02 21:15
こんばんわ。

とりあえずサーバなどの環境を書いていただけると、ほかの皆さんもアドバイスしやすくなると思います。

一応、クッキーの有効期限とセッションの有効期限を調べてみてはいかがでしょうか?
会議室デビュー日: 2004/08/02
投稿数: 9
投稿日時: 2004-08-03 09:39
サーバはWebLogic 6.1 です。

ログインで
HttpSession session = req.getSession(true);
でセッションを作成し、必要項目をセットした後は、
HttpSession session = req.getSession(true);
if (session.isNew()){
セッション継続エラー;
}
になるようにしていたところ、
セッション継続エラーになったので、
パケットを調査したところ、、
初回にサーバから
Set-Cookie: JSESSIONID=QQ7〜;
とセットされ
その後はクライアントから
Cookie: JSESSIONID=QQ77〜;
となります。
ところが、なぜかクライアントからのCookieに"JSESSIONID=QQ77〜;"
がなくなって、サーバでセッション継続エラーになります。
その時にクライアントでdocument.cookieが""になっていました。

セッションタイムアウトは30分です。
作業は5秒間隔で画面を切り替えているので、
セッションタイムアウトにはなっていないとおもいます。

クッキーはセッションIDはテンポラリーなので有効期限の設定はないです。
クライアントでセッションIDについてのクッキーの設定・参照は
なにもしていません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-08-03 10:28
あまり聞かない現象ですが、突然ブラウザからクッキーが送られなくなってしまうのだとすればブラウザの不具合ではないですか?
会議室デビュー日: 2004/08/02
投稿数: 9
投稿日時: 2004-08-03 11:39
複数のクライアントで発生しています。
クライアントによっては発生しやすいものと、あまり発生しないものがあります。

クライアントでクッキーのセッションIDが消える条件って何かあるのでしょうか?

MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-08-03 13:34
Cookie の検索で出たものは
IEで、同一プロセス複数ウインドウでのCookieが消える
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13101&forum=7
ーーーーーーーーーーーーーーーーーー
フレームならドメインの違いが無いかどうか

[ メッセージ編集済み 編集者: MMX 編集日時 2004-08-03 19:06 ]
会議室デビュー日: 2004/08/02
投稿数: 9
投稿日時: 2004-08-03 16:14
ブラウザは1つだけ起動していて、ポップアップなどはなしです。
メニューの切り替えで、分割したフレームの表示が変わる処理です。
サーバへのログオンから開始しているので、ローカルは未使用です。

ローカルのメモリに保存しておいたJSESSIONIDをクッキーが削除された場合に
ローカルでJSESSIONIDの再設定は不可能でしょうか?
tc = document.cookie;
で tcに"JSESSIONID=?????"が保持されるます。

クッキーが消えた場合に
if(document.cookie == "")
document.cookie = tc;
}
としても、
alert(document.cookie)は表示されますが、POSTした情報には
cookieはありませんでした。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2004-08-03 17:16
どもです、がると申します。
始めに、ちょいと手厳しい一言を。
まず始めに、不具合としっかり戯れて、問題の解析をきちんと
やりましょう。
不具合は、解析と切り分けが非常に重要です(いやまぁ非常に難しい
ものでもあるのですが)。
なので、自分の手元に、問題の解析手段を出来るだけ豊富に持つことを
強くお勧めします。

んで、実際にどうやるのか。
とりあえず「絨毯爆撃法(と勝手に命名している)」で、状況を少し
絞ってみましょう。

1.デバッグコードの追加
とりあえず、セッションを張っている「全ての」プログラムの先頭に、
以下のコードを追加してください。
・COOKIE_STRING環境変数から取得できる「受け取ったCookie」の表示
・set-coookieでCookieを発行しているタイミングの表示
 もしJavaで自動で発行、などの理由により難しければ、クライアント
 ブラウザに「受け取ったCookieの表示」をさせて代わりとする
できれば、時間軸(プログラムが動いてる瞬間の時間)も表示するとよいです

2.動かす
実際に動かすと、Cookieデータがどのようにピンポンされているのか、
が見えてくると思います。

3.不具合を自由に出せるようにする
散々不具合と遊んでいるうちに、「どうやったら不具合を起こせるのか」が
見えてくると思います。
「自在に不具合を起こせる」ようになれば、分析はずいぶんと楽に
なります。

特にWeb系の場合、ある一瞬というよりは「全体の流れの中で」おかしく
なっていることが多いので。
「セッションIDの発行から消えてしまうまで」を一連の流れとして追いかけ、
それでも分からなければ「流れを全部Upして」質問したほうが、多分
有益な答えに結びつくと思います。

ちっと手厳しい内容で恐縮ですが。
頑張ってください ^^

スキルアップ/キャリアアップ(JOB@IT)