ASP.NETのCookielessセッション
-
28-10-2019 - |
質問
私は最近、Cookielessセッションについて掘り下げていましたが、セッションがサーバーに作成されるたびに、IDがCookieに保存され、クライアントマシンに保存されると、私は大学でセッションが保存されていると考えていました。サーバー、およびSessionIDがCookieに含まれ、Cookieがクライアントマシンにローカルに保存されている場合、セッションがサーバーに保存されていると言うことができますが、セッションはサーバーに保存されますか?はいの場合、Cookielessセッションの概念は何ですか、誰も私を説明できますか
解決
セッション状態は(ほとんど常に)サーバーに保存され、乱数であるセッショントークンによって識別されます。
そのトークンはクライアントによって保存され、HTTPリクエストとともにサーバーに送信される必要があります(サーバーは、彼が前に彼を見たことを覚えていて、セッションをリクエストに関連付けることができます)。
セッションがサーバーに保存されていると言うことができますが、セッションはサーバーに保存されているのですか?
セッショントークンのみがクライアントに保存され、乱数であるため、それ自体に有用な情報は含まれていません。サーバーに保存されているデータと一緒にのみ価値があります。
はいの場合、Cookielessセッションの概念は何ですか
トークンを保存する最も簡単な方法は、Cookieを使用することです。それがクッキーが発明されたものです。代替品は、非表示のフォーム変数を使用して、またはURLの一部としてCookieを前後に渡しています。
他のヒント
セッションはサーバーに保存されます。 IDに関連付けられた各セッション(ASP.NETの最も単純なセッションステートプロバイダーは、キーとしてIDSを備えたメモリの辞書にすぎません)。このIDはクライアントのCookieにも保存されますが、Cookielessセッションの場合、IDはURLに保存されます(例).
セッションIDをテーブル内のキーと考え、セッションは値として述べてください。キーのみが価値ではなく、クライアントに送信されます。
ASP.NETの場合、セッション状態自体は、キー /値のペアを含む辞書です。
標準のSQL Serverセッションプロバイダーを使用している場合、上記のテーブルは呼び出されます ASPStateTempSessions
. SessionId
PKであり、シリアル化されています Dictionary
どちらにも保存されます SessionItemShort
また SessionItemLong
桁。