1. cookie 與 session 區(qū)別
- Cookie放在瀏覽器上(客戶端)的用戶數(shù)據(jù), Session放在服務(wù)器上的用戶數(shù)據(jù)
- cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙,考慮到安全應(yīng)當(dāng)使用session。
- session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie。
- 單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie
- session中保存的是對(duì)象,cookie中保存的是字符串
- session不能區(qū)分路徑,同一個(gè)用戶在訪問(wèn)一個(gè)網(wǎng)站期間,所有的session在任何一個(gè)地方都可以訪問(wèn)到,而cookie中如果設(shè)置了路徑參數(shù),那么同一個(gè)網(wǎng)站中不同路徑下的cookie互相是訪問(wèn)不到的
區(qū)別圖:

cookie&session.png
2. 介紹 Session
- 會(huì)話:指我們?cè)L問(wèn)網(wǎng)站的一個(gè)周期,比如我們打開(kāi)百度,在百度這個(gè)網(wǎng)站上點(diǎn)擊各個(gè)網(wǎng)頁(yè),然后關(guān)閉瀏覽器,這一個(gè)過(guò)程稱為周期。session在計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用中被稱為“會(huì)話控制”。
- 客戶端瀏覽器訪問(wèn)網(wǎng)站的時(shí)候的過(guò)程:

session過(guò)程.png

session過(guò)程2.png

session過(guò)程3.png

session過(guò)程4.png

session過(guò)程5.png
3. session 的后端實(shí)現(xiàn)

session實(shí)現(xiàn).png
4. cookie 的介紹與使用
- 當(dāng)瀏覽一個(gè)網(wǎng)站的時(shí)候,網(wǎng)站返回給你一個(gè)Session Cookie和一個(gè)RememberMe Cookie,Session Cookie很好理解,就是為了此次的對(duì)話,一旦關(guān)閉了瀏覽器或者超時(shí)了Session Cookie就沒(méi)用了。但是RememberMe Cookie不太一樣,Shiro默認(rèn)的RememberMe Cookie的時(shí)長(zhǎng)是一年,所以不用擔(dān)心這個(gè)Cookie的情況。RememberMe Cookie實(shí)際就是Shiro把這個(gè)用戶的信息加密一下放到cookie里面,下次就可以根據(jù)這個(gè)cookie來(lái)進(jìn)行判斷這是哪個(gè)用戶。

cookie實(shí)現(xiàn).png
這樣就會(huì)在客戶端 看到一個(gè) cookie 叫做 remenberMe 了 ,瀏覽器關(guān)閉了 也是會(huì)存在的,而且 有效時(shí)間的是 7 天 。RememberMe這個(gè)參數(shù)設(shè)置為true后,在登陸的時(shí)候就會(huì)在客戶端設(shè)置remenberme 的相應(yīng)cookie。當(dāng)實(shí)現(xiàn)了記住我功能后,下次用戶在進(jìn)行訪問(wèn)時(shí),就不再需要登錄驗(yàn)證了
5. Cookie簡(jiǎn)介
- HTTP Cookie簡(jiǎn)稱cookie,在HTTP請(qǐng)求發(fā)送 Set-Cookie HTTP頭作為響應(yīng)的一部分。通過(guò)name=value的形式存儲(chǔ)
- cookie的構(gòu)成:
- 名稱:name(不區(qū)分大小寫(xiě),但最好認(rèn)為它是區(qū)分的)
- 值:value(通過(guò)URL編碼:encodeURIComponent)
- 域
- 路徑
- 失效時(shí)間:默認(rèn)是瀏覽器關(guān)閉
- 安全標(biāo)志:設(shè)置安全標(biāo)志后只有SSL連接的時(shí)候才發(fā)送到服務(wù)器
- cookie的作用:主要用于保存登錄信息
- 生命周期:在設(shè)置的cookie過(guò)期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉。與服務(wù)器端通信:每次都會(huì)攜帶在HTTP頭中,如果使用cookie保存過(guò)多數(shù)據(jù)會(huì)帶來(lái)性能問(wèn)題
6. sessionStorage 與 localStorage
sessionStorage:
- sessionStorage是Storage類型的一個(gè)對(duì)象,擁有clear(),getItem(name),key(index),removeItem(name),setItem(name,value)方法
- sessionStorage對(duì)象存儲(chǔ)特定于某個(gè)會(huì)話的數(shù)據(jù),也就是該數(shù)據(jù)只保持到瀏覽器關(guān)閉
- 將數(shù)據(jù)保存在session對(duì)象中。所謂session,是指用戶在瀏覽某個(gè)網(wǎng)站時(shí),從進(jìn)入網(wǎng)站到瀏覽器關(guān)閉所經(jīng)過(guò)的這段時(shí)間,也就是用戶瀏覽這個(gè)網(wǎng)站所花費(fèi)的時(shí)間。session對(duì)象可以用來(lái)保存在這段時(shí)間內(nèi)所要求保存的任何數(shù)據(jù)
- sessionStorage為臨時(shí)保存
localStorage:
- localStorage也是Storage類型的一個(gè)對(duì)象
- 在HTML5中l(wèi)ocalStorage作為持久保存在客戶端數(shù)據(jù)的方案取代了globalStorage(globalStorage必須指定域名)
- localStorage會(huì)永久存儲(chǔ)會(huì)話數(shù)據(jù),除非removeItem,否則會(huì)話數(shù)據(jù)一直存在
- 將數(shù)據(jù)保存在客戶端本地的硬件設(shè)備(通常指硬盤,也可以是其他硬件設(shè)備)中,即使瀏覽器被關(guān)閉了,該數(shù)據(jù)仍然存在,下次打開(kāi)瀏覽器訪問(wèn)網(wǎng)站時(shí)仍然可以繼續(xù)使用
- localStorage為永久保存
7. 總結(jié) cookie 與 session 區(qū)別
- cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上
- cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙,考慮到安全應(yīng)當(dāng)使用session
- session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上,當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie
- 單個(gè)cookie保存的數(shù)*據(jù)不能超過(guò)4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie
- 建議將登錄信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中
- session保存在服務(wù)器,客戶端不知道其中的信心;cookie保存在客戶端,服務(wù)器能夠知道其中的信息
- session中保存的是對(duì)象,cookie中保存的是字符串
- session不能區(qū)分路徑,同一個(gè)用戶在訪問(wèn)一個(gè)網(wǎng)站期間,所有的session在任何一個(gè)地方都可以訪問(wèn)到,而cookie中如果設(shè)置了路徑參數(shù),那么同一個(gè)網(wǎng)站中不同路徑下的cookie互相訪問(wèn)不到