Cookie
由于HTTP協(xié)議是無(wú)狀態(tài)的,對(duì)于一個(gè)瀏覽器發(fā)出的多次請(qǐng)求,WEB服務(wù)器無(wú)法區(qū)分它們是不是來(lái)源于同一個(gè)瀏覽器。所以,需要額外的數(shù)據(jù)用于維護(hù)會(huì)話。 Cookie 正是這樣的一段隨HTTP請(qǐng)求一起被傳遞的額外數(shù)據(jù)。 Cookie 是一小段文本信息,它的工作方式就是伴隨著用戶請(qǐng)求和頁(yè)面在 Web 服務(wù)器和瀏覽器之間傳遞。Cookie 包含每次用戶訪問(wèn)站點(diǎn)時(shí) Web 應(yīng)用程序都可以讀取的信息。
與hidden-input, QueryString相比,Cookie有更多的屬性,許多瀏覽器可以直接查看這些信息:
由于Cookie擁有這些屬性,因此在客戶端狀態(tài)管理中可以實(shí)現(xiàn)更多的功能,尤其是在實(shí)現(xiàn)客戶端會(huì)話方面具有不可替代的作用。
關(guān)于Cookie的更多講解,請(qǐng)參考我的另一篇博客:細(xì)說(shuō)Cookie
優(yōu)點(diǎn):
1. 可配置到期規(guī)則:Cookie可以在客戶端長(zhǎng)期存在,也可以在瀏覽器關(guān)閉時(shí)清除。
2. 不需要任何服務(wù)器資源:Cookie 存儲(chǔ)在客戶端。
3. 簡(jiǎn)單性:Cookie 是一種基于文本的輕量結(jié)構(gòu),包含簡(jiǎn)單的鍵值對(duì)。
4. 數(shù)據(jù)持久性:與其它的客戶端狀態(tài)數(shù)據(jù)相比,Cookie可以實(shí)現(xiàn)長(zhǎng)久保存。
5. 良好的擴(kuò)展性:Cookie的讀寫要經(jīng)過(guò)ASP.NET管線,擁有無(wú)限的擴(kuò)展性。
這里我要解釋一下Cookie 【良好的擴(kuò)展性】是個(gè)什么概念,比如:
1. 我可以實(shí)現(xiàn)把Cookie保存到數(shù)據(jù)庫(kù)中而不需要修改現(xiàn)有的項(xiàng)目代碼。
2. 把SessionId這樣由ASP.NET產(chǎn)生的臨時(shí)Cookie讓它變成持久保存。
缺點(diǎn):
1. 大小受到限制。
2. 增加請(qǐng)求頭長(zhǎng)度。
3. 用戶可見(jiàn),保存敏感數(shù)據(jù)時(shí)需要加密。