- PR -

セッションIDのふられ方について

投稿者投稿内容
緑茶
常連さん
会議室デビュー日: 2003/08/17
投稿数: 32
お住まい・勤務地: 東京都
投稿日時: 2003-09-03 16:39
ASP.NETのブラウザ識別のセッションIDについて質問です。

過去にこのような現象がおこりました。

1.ブラウザからASP.NETサーバにアクセスし、セッションIDが採番される。
2. 1でアクセスしたブラウザのセッションが切れる。
 (ここで仕様だと、セッションIDがクリアされるはず)
3.再度同じブラウザから、ASP.NETサーバにアクセスすると同じセッションIDが採番された。

上記のような現象が起こったのですが、
セッションIDは、アクセスブラウザを識別するためのIDであるとすると、
3で、別のセッションIDが採番されるはずですが、同一セッションIDが
採番されました。

これについて、どのような原因で同じセッションIDが採番されたか
わかる方いらっしゃいますでしょうか?

WindowsServer2003 + VisualStudio2003で開発を行っています。

よろしくお願いします。

小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-09-03 18:29
2でブラウザのセッションが切れたということはどうやって確認しました?

#切れたつもりが残ってた、というのが一番考えられることだと思うけど。
緑茶
常連さん
会議室デビュー日: 2003/08/17
投稿数: 32
お住まい・勤務地: 東京都
投稿日時: 2003-09-03 20:26
引用:

小野@EACさんの書き込み (2003-09-03 18:29) より:
2でブラウザのセッションが切れたということはどうやって確認しました?

#切れたつもりが残ってた、というのが一番考えられることだと思うけど。



こちらで再度検証した結果、ブラウザを再起動後セッションID
を調べたら別のセッションIDがふられていることを確認しました。
こちらの誤解もあったようで失礼しました。

あと便乗で質問させて頂きたいのですが、
同じ端末から複数のブラウザを起動した場合に個々の
ブラウザ単位で割り振られるセッションIDは異なるのでしょうか?

もしブラウザ毎にセッションIDが異なる場合、セッションIDを
同じにするような設定は可能でしょうか?

このあたり、まずはこちらで検証してから書き込ませて頂く
べきだとは思うのですが、もしご存知であれば
ご教授願えませんでしょうか?

宜しくお願いいたします

あすかぜ
常連さん
会議室デビュー日: 2003/04/22
投稿数: 21
投稿日時: 2003-09-03 23:16
サーバー側にはどのブラウザで開いたとかどのフレームで開いたとかいう情報は送られないので、同じIPアドレスからリクエストを出せば同じセッションIDになるはずです。(VIEWSTATEのように表示しているHTML中に情報を保持している場合はブラウザを区別することができます)
また、ブラウザを閉じた場合もサーバー側への通知はないので、クライアントのブラウザを再起動してもサーバー側でそれを感知する手段はありません。さんざん既出ですね。(JavaScriptのshowModalDialogであれば、ポップアップウィンドウを閉じた後の処理が書けますが。)ASP.NETでは、明示的にセッションをクローズするか、一定時間リクエストがない場合にセッションを破棄するようになっているはずです。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-03 23:53
セッションが切れてもCookieの期限が切れていなければ、
Cookieに"ASP.NET_SessionId"が格納されているため、
再接続した場合、セッション情報は破棄されていますが、
同じセッションIDが割り当てられて新しくセッションが開始されたと思います。

ブラウザを再起動すればCookieは破棄されているので
別のセッションIDが割り当てられます。

同じ端末でも別々にブラウザを起動すれば、別のCookieが使用されるため
別のセッションIDが割り当てられます。

スクリプトでwindow.openして開かれたウィンドウなどは同じIDになりますが、
別々に起動したブラウザは別のCookieとなるため、
同じセッションIDを割り当てるのは無理じゃないかと思います。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-09-03 23:56
引用:

あすかぜさんの書き込み (2003-09-03 23:16) より:
サーバー側にはどのブラウザで開いたとかどのフレームで開いたとかいう情報は送られないので、同じIPアドレスからリクエストを出せば同じセッションIDになるはずです。(VIEWSTATEのように表示しているHTML中に情報を保持している場合はブラウザを区別することができます)


ブラウザによると思いますが、通常は複数ブラウザを(別に)起動した場合は別のセッションになると思いますよ。
# セッションの判定はクッキー等に保存されているIDで行われるはず
# IPアドレスで(判定自体を)行っているわけではない

セッションIDの情報が取れなければ、新しいセッションとなって新たにセッションIDが振られるイメージだと思います。
緑茶
常連さん
会議室デビュー日: 2003/08/17
投稿数: 32
お住まい・勤務地: 東京都
投稿日時: 2003-09-04 10:30
ここで私なりに整理してみたのですが、

・タイムアウト等でセッションが切れてもCookieが
残っていれば、"ASP.NET_SessionId"が残っているので
新しくセッションを確立しても同じセッションIDになる。

・ブラウザを終了した場合は、特に設定の変更をしなければ
Cookieが破棄される為に、ブラウザの再起動後は別のセッションID
が割り振られる

・同端末上で別々のブラウザを起動すれば、個別にCookieが割り振られ
るのでセッションIDも別になる。

これは勉強になりました。
みなさん、本当にありがとうございました。

なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-09-04 13:50
引用:

・タイムアウト等でセッションが切れてもCookieが
残っていれば、"ASP.NET_SessionId"が残っているので
新しくセッションを確立しても同じセッションIDになる。


もしかすると私の書き込みに語弊があったかもしれませんが、この場合もセッションIDは変わると思います。
# セッションIDは取得できたが、対応するセッション情報が存在しない場合という感じ

新規にセッションが作成される際には、必ず新しいセッションIDが生成されるはずです。

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