cookie和session的基礎知識:
cookie是儲存在用戶端的,儲存少量資訊,明文,經常用來儲存使用者id之類的資訊,常見情境就是登入時候的“記住我”。不推薦儲存敏感資訊。
session是會話級的,儲存在服務端,每個使用者是唯一的,可以用來實現購物車之類的,需要在服務端儲存目前使用者會話的上下文資訊的需求。可以儲存在伺服器的記憶體中,不能跨伺服器;可以儲存在資料庫中。
上面是一些零星的知識點。其實還有很多,例如cookie中的sessionid,session還可以用狀態伺服器儲存,這樣可以用專用的伺服器儲存session。cookie中的內容是字串類型的,session中的內容是object類型的,session中的內容擷取之後需要類型轉換,轉換成所需要的類型。
在ASP.NET中,可以在web.config檔案中進行配置。
<configuration> <system.web> <sessionState mode="InProc" timeout="20" cookieless="true" stateConnectionString="tcpip=localhost:42424" sqlConnectionString="" /> </system.web> </configuration>
關於配置節中的參數資訊,可以查看 ASP.NET Session 狀態的儲存 ,講得比較詳細,還有找到了細說Cookie 這樣一篇文章,感覺講得也比較詳細。
問題有兩個。
1 用戶端禁用cookie之後,session還能用嗎?
2 cookie是如何在用戶端和服務端傳遞的,具體的傳遞過程。
回答。
1 用戶端禁用cookie之後,session還能用嗎?
禁用cookie之後,也可以使用session。
Session的狀態儲存在兩個地方,分別是用戶端和服務端。用戶端儲存SessionID,Session資訊儲存在服務端。用戶端的SessionID是儲存在Cookie中的,如果瀏覽器禁用cookie,那麼就不能使用session的好處了。
其實sessionid還可以通過url傳遞,還可以通過form傳遞,可以自訂來實現的。
在ASP.NET中,session有兩種儲存方式:cookie和cookieless。也就是說禁用cookie也可以使用session。配置為cookieless=true之後,可以選擇將session儲存在狀態服務中,或者儲存在SQL Server中。具體的做法可以看一下最後的參考文獻。
2 cookie是如何在用戶端和服務端傳遞的,具體的傳遞過程。
cookie在用戶端和伺服器端的傳遞是通過請求和響應的頭來傳遞的。
從用戶端到伺服器端傳遞cookie,是在request的header中有一個cookie,裡面就是傳遞的內容。
從伺服器端到用戶端傳遞cookie,是在response的header中有一個set-cookie,裡面就是通過後台代碼設定的cookie的內容。
這可以通過很多的抓包工具來查看,例如fiddler,httpwatch,firebug。
本文出自 “突破中的IT結構師” 部落格,請務必保留此出處http://virusswb.blog.51cto.com/115214/998456
返回欄目頁:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/aspx/