摘要:保持狀態(tài)保存在瀏覽器端,保存在服務器端存儲的大小單個保存的數(shù)據(jù)不能超過大小沒有限制。的目的是克服由所帶來的一些限制,當數(shù)據(jù)需要被嚴格控制在客戶端時,不需要持續(xù)的將數(shù)據(jù)發(fā)回服務器。的生命周期是僅在當前會話下有效。
寫在前面
既然是淺談,就不會詳細從底層原理解釋這幾個的區(qū)別,就簡單地聊一下,這幾個的區(qū)別,優(yōu)缺點,應用場景
cookie和session瀏覽器的緩存機制提供了可以將用戶數(shù)據(jù)存儲在客戶端上的方式,可以利用cookie和session跟服務端進行數(shù)據(jù)交互。
cookie和session都是用來跟蹤瀏覽器用戶身份的會話方式
cookie機制:如果不在瀏覽器中設置過期事件,cookie被保存在內存中,生命周期隨瀏覽器的關閉而結束,這種cookie簡稱為會話cookie。如果在瀏覽器中設置了cookie的過期事件,cookie會被保存在硬盤中,關閉瀏覽器后,cookie數(shù)據(jù)仍然存在,直到過期事件結束才消失。cookie是服務端發(fā)給客戶端的特殊信息,cookie是以文本的方式保存在客戶端,每次請求時都帶上它
session機制:當服務器收到請求需要創(chuàng)建session對象時,首先會檢查客戶端請求中是否包含sessionid。如果有sessionid,服務器將根據(jù)該id返回對應session對象。如果客戶端請求中沒有sessionid,服務器會創(chuàng)建新的session對象,并把sessionid在本次響應中返回給客戶端。通常使用cookie方式存儲sessionid到客戶端,在交互中瀏覽器按照規(guī)則將sessionid發(fā)送給服務器。如果用戶禁用cookie,則要使用URL重寫,可以通過response.encodeURL(url)進行實現(xiàn);API對encodeURL的結束為,當瀏覽器支持cookie時,url不做任何處理;當瀏覽器不支持cookie的時候,將會重寫URL將sessionid拼接到訪問地址后。
cookie保存在瀏覽器端,session保存在服務器端
單個cookie保存的數(shù)據(jù)不能超過4kb;session大小沒有限制。
session大小沒有限制。
cookie只能保存字符串類型,以文本的方式。
session通過類似與Hashtable的數(shù)據(jù)結構來保存,能支持任何類型的對象(session中可含有多個對象)
session的安全性大于cookie。原因如下:
① sessionid存儲在cookie中,若要攻破session首先要攻破cookie; ② sessionid是要有人登錄,或者啟動session_start才會有,所以攻破cookie也不一定能得到sessionid; ③ 第二次啟動session_start后,前一次的sessionid就是失效了,session過期后,sessionid也隨之失效。 ④ sessionid是加密的。
綜上所述,攻擊者必須在短時間內攻破加密的sessionid,這很難。
cookie:
(1)判斷用戶是否登錄過網(wǎng)站,以便下次登錄時能夠實現(xiàn)自動登錄(或者記住密碼)。 (2)保存上次登錄的事件等信息。 (3)保存上次查看的頁面 (4)瀏覽計數(shù)
session:
(1)網(wǎng)上商城中的購物車 (2)保存用戶登錄信息 (3)將某些數(shù)據(jù)放入session中,供同一用戶的不同頁面使用 (4)防止用戶非法登錄
cookie:
(1)大小受限 (2)用戶可以操作(禁用)cookie,使功能受限 (3)安全性較低 (4)有些狀態(tài)不可能保存在客戶端 (5)每次訪問都要傳送cookie給服務器,浪費寬帶 (6)cookie數(shù)據(jù)有路徑(path)的概念,可以限制cookie只屬于某個路徑下。
session:
(1)session保存的東西越多,就越占用服務器內存,對于用戶在線人數(shù)較多的網(wǎng)站,服務器的內存壓力會比較大 (2)依賴于cookie(sessionid保存在cookie),如果禁用cookie,則要使用URL重寫 (3)創(chuàng)建session變量有很大的隨意性,可隨時調用,不需要開發(fā)者做精確地處理,所以過度的使用session變量將會導致代碼不可讀而且不好維護。WebStorage
WebStorage的目的是克服由cookie所帶來的一些限制,當數(shù)據(jù)需要被嚴格控制在客戶端時,不需要持續(xù)的將數(shù)據(jù)發(fā)回服務器。
WebStorage兩個主要目標:
1.提供一種在cookie之外存儲會話數(shù)據(jù)的路徑 2.提供一種存儲大量可以跨會話存在的數(shù)據(jù)的機制
HTML5的WebStorage提供了兩種API:localStorage(本地存儲)和sessionStorage(會話存儲)
localStorage和sessionStorage的區(qū)別1.生命周期
localStorage的生命周期是永久的,關閉頁面或瀏覽器之后localStorage中的數(shù)據(jù)也不會消失。localStorage除非主動刪除數(shù)據(jù),否則數(shù)據(jù)永遠不會消失。
sessionStorage的生命周期是僅在當前會話下有效。sessionStorage引入了一個“瀏覽器窗口”的概念,sessionStorage是在同源的窗口中始終存在的數(shù)據(jù)。只要這個瀏覽器窗口沒有關閉,即使刷新頁面或者進入同源另一個頁面,數(shù)據(jù)依然存在。但是sessionStorage在關閉了瀏覽器窗口后就會被銷毀。同時獨立的打開同一個窗口同一個頁面,sessionStorage也是不一樣的。
2.存儲大小
localStorage和sessionStorage的存儲數(shù)據(jù)大小一般都是:5MB
3.存儲位置
localStorage和sessionStorage都保存在客戶端,不與服務器進行交互通信
4.存儲內容類型
localStorage和sessionStorage只能存儲字符串類型,對于復雜的對象可以使用ECMAScript提供的JSON對象的stringify和parse來處理
5.獲取方式
localStorage:window.localStorage
sessionStorage:window.sessionStorage
6.應用場景
localStorage:常用于長期登錄(+判斷用戶是否已登錄),適合長期保存在本地的數(shù)據(jù)
sessionStorage:敏感賬號一次性登錄
(1)存儲空間更大:cookie為4KB,而WebStorage是5MB
(2)節(jié)省網(wǎng)絡流量:WebStorage不會傳送到服務器,存儲在本地的數(shù)據(jù)可以直接獲取,也不會像cookie一樣每次請求都會傳送到服務器,所以減少了客戶端和服務端的交互,節(jié)省了網(wǎng)絡流量
(3)對于那種只需要在用戶瀏覽一組頁面期間保存而關閉瀏覽器后就可以丟棄的數(shù)據(jù),sessionStorage會非常方便
(4)快速顯示:有的數(shù)據(jù)存儲在WebStorage上再加上瀏覽器本身的緩存。獲取數(shù)據(jù)時可以從本地獲取會比從服務器端獲取快得多,所以速度更快
(5)安全性:WebStorage不會隨著HTTP header發(fā)送到服務器端,所以安全性相對于cookie來說會比較高一些,不會擔心截獲,但是仍然存在偽造問題
(6)WebStorage提供了一些方法,數(shù)據(jù)操作比cookie方便
setItem(key, value) —— 保存數(shù)據(jù),以鍵值對的方式存儲信息 getItem(key) —— 獲取數(shù)據(jù),將鍵值傳入,即可獲取到對應的value值 removeItem(key) —— 刪除單個數(shù)據(jù),根據(jù)鍵值移除對應的信息 clear() —— 刪除所有的數(shù)據(jù) key(index) —— 獲取某個索引的key
快樂cookie, session, webstorage
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99453.html
摘要:不是很安全,別人可以分析存放在本地的并進行欺騙,考慮到安全應當使用。因此不是一種持久化的本地存儲,僅僅是會話級別的存儲。用于持久化的本地存儲,除非主動刪除數(shù)據(jù),否則數(shù)據(jù)是永遠不會過期的。 前言 總括:詳細講述Cookie,LocalStorge,SesstionStorge的區(qū)別和用法。 人生如畫,歲月如歌。 原文博客地址:Javascript本地存儲小結 知乎專欄&&簡書專題:前端...
摘要:獲取數(shù)據(jù),將鍵值傳入,即可獲取到對應的值。刪除單個數(shù)據(jù),根據(jù)鍵值移除對應的信息。存儲文件夾用戶名用戶名瀏覽器窗口關閉后數(shù)據(jù)被銷毀。存儲量小安全性差數(shù)據(jù)操作接口不友好,而存儲量較大安全性較高數(shù)據(jù)接口友好。 在前端日常開發(fā)中 cookie、webStorage 是我們常用的瀏覽器緩存方式。但同時說起 cookie、session、sessionStorage 和 localStorage ...
摘要:那要是被刪了呢那沒辦法了,只能重新登陸,意味著重新提交重新分配隨機數(shù)。它是一個哈希,作用就是字面意思,本地存儲,只不過這里的本地指的是瀏覽器。 標簽可以保留回車和空格等你怎么寫它就怎么展示的內容 cookie cookie可以看作是一種設置,允許瀏覽器在電腦本地硬盤的某一個隱蔽的地方開發(fā)一塊存儲空間,用來存放某些特定的內容。 如果在服務器端設置了允許使用cookie,那么,之后瀏覽器每...
閱讀 2312·2021-11-15 11:38
閱讀 2439·2021-11-15 11:37
閱讀 2542·2021-08-24 10:00
閱讀 2900·2019-08-30 15:56
閱讀 1259·2019-08-30 15:53
閱讀 3694·2019-08-29 18:43
閱讀 2929·2019-08-29 17:01
閱讀 3254·2019-08-29 16:25