1. 程式人生 > >Cookie與Web Storage的區別

Cookie與Web Storage的區別

1.談談Cookie的認識 
(1)總數的限制:每個特定的域名下最多生成20個cookie 
(2)尺寸的限制:每個cookie長度不能超過4KB,否則會被截掉。cookie的最大大約為4096位元組,為了相容性,一般不能超過4095位元組。 
IE 提供了一種儲存可以持久化使用者資料,叫做userData,每個資料最多128K,每個域名下最多1M。這個持久化資料放在快取中,如果快取沒有清理,那麼會一直存在。


優點:極高的擴充套件性和可用性


1.通過良好的程式設計,控制儲存在cookie中的session物件的大小。


2.通過加密和安全傳輸技術(SSL),減少cookie被破解的可能性。


3.只在cookie中存放不敏感資料,即使被盜也不會有重大損失。


4.控制cookie的生命期,使之不會永遠有效。偷盜者很可能拿到一個過期的cookie。


缺點: 
1.cookie數量和長度的限制。每個domain最多隻能有20條cookie,每個cookie長度不能超過4KB,否則會被截掉。


2.安全性問題。如果cookie被人攔截了,就可以取得所有的session資訊。即使加密也與事無補,因為攔截者並不需要知道cookie的意義,他只要原樣轉發cookie就可以達到目的了。


3.有些狀態不可能儲存在客戶端。例如,為了防止重複提交表單,我們需要在伺服器端儲存一個計數器。如果我們把這個計數器儲存在客戶端,那麼它起不到任何作用。


2 瀏覽器本地儲存


js提供了sessionStorage和globalStorage。在HTML5中提供了localStorage來取代globalStorage。


html5中的Web Storage包括了兩種儲存方式:sessionStorage和localStorage。


sessionStorage用於本地儲存一個會話(session)中的資料,這些資料只有在同一個會話中的頁面才能訪問並且當會話結束後資料也隨之銷燬。因此sessionStorage**不是一種持久化的本地儲存**,僅僅是會話級別的儲存。


globalStorage跨越會話儲存資料,但是有特定的訪問限制。對globalStorage空間的訪問,是依據發起請求的頁面的域名,協議和埠限制的。資料儲存到javascript刪除或者使用者清除瀏覽器快取,適合客戶端儲存文件或者長期儲存使用者偏好設定。


而localStorage用於持久化的本地儲存,除非主動刪除資料,否則資料是永遠不會過期的。不能指定任何訪問規則,規則是事先設定好的,頁面必須來自同一個域名,使用同一個協議,在同一埠上。


3 web storage和cookie的區別


Web Storage是為了更大容量儲存設計的。Cookie的大小是受限的,並且每次你請求一個新的頁面的時候Cookie都會被髮送過去,這樣無形中浪費了頻寬,另外cookie還需要指定作用域,不可以跨域呼叫。


除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開發者自己封裝setCookie,getCookie。


但是Cookie也是不可以或缺的:Cookie的作用是與伺服器進行互動,作為HTTP規範的一部分而存在 ,而Web Storage僅僅是為了在本地“儲存”資料而生。