2012-02-21 176 views
1

我最近在挖掘有關無Cookie會話的內容,我在一篇文章中提到,無論何時在服務器上創建會話,其ID都存儲在Cookie中,客戶端計算機上,我正在我的大學認爲會話存儲在服務器上,並且如果會話ID在Cookie中,並且cookie在本地存儲在客戶端計算機中,如何說會話存儲在服務器上,是嗎?會話存儲在服務器上嗎?如果是,那麼cookieless session的概念是什麼,任何人都可以解釋我在asp.net中無Cookie會話

回答

5

會話狀態(幾乎總是)存儲在服務器上,並且由隨機數(會話令牌)標識。

該令牌需要由客戶端存儲,並與他的HTTP請求一起發送到服務器(以便服務器可以記住他之前見過他並將會話與請求相關聯)。

如何說會話存儲在服務器上,是嗎,會話存儲在服務器上?

只有會話令牌存儲在客戶端,由於它是一個隨機數,它本身不包含任何有用的信息。它只與存儲在服務器上的數據一起變得有價值。

如果是,那麼什麼是Cookie會話

存儲令牌使用Cookie的最簡單方法的概念。這就是發明餅乾的原因。替代方法是使用隱藏的表單變量或作爲URL的一部分來回傳遞cookie。

1

會話存儲在服務器上。與ID關聯的每個會話(ASP.NET中最簡單的會話狀態提供程序只是內存中的字典,其ID爲鍵)。此ID也存儲在客戶端的Cookie中,但在無Cookie會話的情況下,ID存儲在URL(example)中。

0

將會話ID視爲表中的鍵,將會話狀態視爲值。只有鑰匙被髮送給客戶,而不是價值。

對於ASP.NET,會話狀態本身是一個包含鍵/值對的字典。

如果您使用的是標準SQL Server會話提供程序,則上面提到的表稱爲ASPStateTempSessionsSessionId是PK,並且序列號爲Dictionary存儲在SessionItemShortSessionItemLong列中。