HTML4的本地存儲(chǔ) cookie
一笼才、干啥的
cookie
和session
都是用來(lái)跟蹤瀏覽器用戶身份的會(huì)話方式因妇。
Cookie是服務(wù)器發(fā)給客戶端的特殊信息化借,cookie是以文本的方式保存在客戶端领曼,每次請(qǐng)求時(shí)都帶上它
二缆巧、保持狀態(tài)
cookie保存在瀏覽器端虱朵,session保存在服務(wù)器端
三莉炉、使用方式
1.cookie機(jī)制
:如果不在瀏覽器中設(shè)置過(guò)期時(shí)間,cookie被保存在內(nèi)存中碴犬,生命周期隨瀏覽器的關(guān)閉而結(jié)束絮宁,這種cookie簡(jiǎn)稱會(huì)話cookie。如果在瀏覽器中設(shè)置了cookie的過(guò)期時(shí)間服协,cookie被保存在硬盤中绍昂,關(guān)閉瀏覽器后,cookie數(shù)據(jù)仍然存在蚯涮,直到過(guò)期時(shí)間結(jié)束才消失
-
session機(jī)制
:當(dāng)服務(wù)器收到請(qǐng)求需要?jiǎng)?chuàng)建session對(duì)象時(shí)治专,首先會(huì)檢查客戶端請(qǐng)求中是否包含sessionid。如果有sessionid遭顶,服務(wù)器將根據(jù)該id返回對(duì)應(yīng)session對(duì)象张峰。如果客戶端請(qǐng)求中沒(méi)有sessionid,服務(wù)器會(huì)創(chuàng)建新的session對(duì)象棒旗,并把sessionid在本次響應(yīng)中返回給客戶端喘批。通常使用cookie方式存儲(chǔ)sessionid到客戶端,在交互中瀏覽器按照規(guī)則將sessionid發(fā)送給服務(wù)器铣揉。如果用戶禁用cookie饶深,則要使用URL重寫,可以通過(guò)response.encodeURL(url) 進(jìn)行實(shí)現(xiàn)逛拱,當(dāng)瀏覽器支持Cookie時(shí)敌厘,url不做任何處理;當(dāng)瀏覽器不支持Cookie的時(shí)候朽合,將會(huì)重寫URL將SessionID拼接到訪問(wèn)地址后
四俱两、存儲(chǔ)內(nèi)容
cookie
只能保存字符串類型,以文本的方式曹步;session
通過(guò)類似與Hashtable
的數(shù)據(jù)結(jié)構(gòu)來(lái)保存宪彩,能支持任何類型的對(duì)象(session中可含有多個(gè)對(duì)象)
五、存儲(chǔ)的大小
cookie:?jiǎn)蝹€(gè)cookie保存的數(shù)據(jù)不能超過(guò)4kb讲婚;
session大小沒(méi)有限制
六尿孔、安全性
cookie:針對(duì)cookie所存在的攻擊:Cookie欺騙,Cookie截獲;session的安全性大于cookie
七活合、應(yīng)用
cookie:
(1)判斷用戶是否登陸過(guò)網(wǎng)站雏婶,以便下次登錄時(shí)能夠?qū)崿F(xiàn)自動(dòng)登錄(或者記住密碼)
(2)保存上次登錄的時(shí)間等信息
(3)保存上次查看的頁(yè)面
(4)瀏覽計(jì)數(shù)
session:Session用于保存每個(gè)用戶的專用信息,變量的值保存在服務(wù)器端芜辕,通過(guò)SessionID來(lái)區(qū)分不同的客戶
∩薪尽(1)網(wǎng)上商城中的購(gòu)物車
(2)保存用戶登錄信息
∏中(3)將某些數(shù)據(jù)放入session中倔丈,供同一用戶的不同頁(yè)面使用
(4)防止用戶非法登錄
八状蜗、缺點(diǎn)
cookie:
(1)大小受限
(2)用戶可以操作(禁用)cookie需五,使功能受限
(3)安全性較低
(4)有些狀態(tài)不可能保存在客戶端。
(5)每次訪問(wèn)都要傳送cookie給服務(wù)器轧坎,浪費(fèi)帶寬
(6)cookie數(shù)據(jù)有路徑(path)的概念宏邮,可以限制cookie只屬于某個(gè)路徑下
session:
(1)Session保存的東西越多,就越占用服務(wù)器內(nèi)存缸血,對(duì)于用戶在線人數(shù)較多的網(wǎng)站蜜氨,服務(wù)器的內(nèi)存壓力會(huì)比較大
(2)依賴于cookie(sessionID保存在cookie)捎泻,如果禁用cookie飒炎,則要使用URL重寫,不安全
“驶怼(3)創(chuàng)建Session變量有很大的隨意性郎汪,可隨時(shí)調(diào)用,不需要開發(fā)者做精確地處理闯狱,所以煞赢,過(guò)度使用session變量將會(huì)導(dǎo)致代碼不可讀而且不好維護(hù)
九、操作cookie
獲取頁(yè)面cookie:
document.cookie
使用jquery.cookie.js
jquery.cookie.js基于jquery哄孤;先引入jquery照筑,再引入:jquery.cookie.js