22

オブジェクトはシリアル化されてユーザーに送信され、各接続で返されますか(Cookieに保存されます)?

または、それらはサーバーヒープに格納されており、Cookieは非常に小さな識別子にすぎませんか?

このトピックに関する情報があれば役立ちます。

ありがとうございました

4

2 に答える 2

22

あなたは2番目の推測でそれを手に入れました。

CookieにはJSESSIONIDが含まれています。そのIDは、サーバーが維持するマップでユーザーのHttpSessionを検索するために使用されます。少なくともこれが最も一般的な方法です。サーバーがこれを実装できるより複雑な方法がありますが、Cookieで状態全体を前後にシャトルすることはそれらの1つではありません。

これにはいくつかの意味があります。まず、サーバーがダウンすると、セッション状態が失われます。次に、サーバークラスターがある場合は、ユーザーを毎回同じサーバーに接続する必要があります。そうしないと、後続のリクエスト間のセッションが失われます。最後に、誰かが他の誰かのJSESSIONIDをコピーして、そのJSESSIONIDを置き換える方法を見つけた場合、セッションハイジャックが発生する可能性があります。

于 2011-04-29T22:55:32.167 に答える
8

Cookieには、セッション識別子(通常はJSESSIONID)が含まれているだけです。サーバーは、この識別子をユーザーのセッションに現在保存されているデータにマップします。

データ自体はメモリに保存される場合もあれば、使用しているサーバーとその構成に応じてデータベースまたはファイルにシリアル化される場合もあります。

于 2011-04-29T22:56:29.983 に答える