一、cookie和session
首先 session 和 cookie 用於瀏覽器客戶端與服務端數據交互,通過會話的方式跟蹤瀏覽器用戶身份。
1、cookie
(1)、一般由服務器生成,可以設置失效時間,如果是瀏覽器生成則默認瀏覽器關閉后失效;
(2)、與服務器端通信,每次請求都放在 http 請求頭中;
(3)、數據存儲在內存中,數據大小為4KB,保存在類型為字符串;
2、session
session和cookie的作用有點類似,都是為了存儲用戶相關的信息。不同的是,cookie是存儲在本地瀏覽器,而session存儲在服務器。存儲在服務器的數據會更加的安全,不容易被竊取。但存儲在服務器也有一定的弊端,就是會占用服務器的資源,但現在服務器已經發展至今,一些session信息還是綽綽有余的。
3. session和cookie的結合使用
web開發發展至今,cookie和session的使用已經出現了一些非常成熟的方案。在如今的市場或者企業里,一般有兩種存儲方式:
1)、存儲在服務端:通過cookie存儲一個session_id,然后具體的數據則是保存在session中。如果用戶已經登錄,則服務器會在cookie中保存一個session_id,下次再次請求的時候,會把該session_id攜帶上來,服務器根據session_id在session庫中獲取用戶的session數據。就能知道該用戶到底是誰,以及之前保存的一些狀態信息。這種專業術語叫做server side session。
2)、將session數據加密,然后存儲在cookie中。這種專業術語叫做client side session。
二、WebStorage
HTML5的WebStorage提供了兩種API: localStorage(本地存儲)和sessionStorage(會話存儲)
1、生命周期:
localStorage的生命周期是永久的,關閉頁面或瀏覽器之后localStorage中的數據也不會消失。localStorage除非主動刪除數據,否則數據永遠不會消失。
sessionStorage的生命周期是在僅在當前會話下有效。sessionStorage引入了一個“瀏覽器窗口”的概念,sessionStorage是在同源的窗口中始終存在的數據。只要這個瀏覽器窗口沒有關閉,即使刷新頁面或者進入同源另一個頁面,數據依然存在。但是sessionStorage在關閉了瀏覽器窗口后就會被銷毀。同時獨立的打開同一個窗口同一個頁面,sessionStorage也是不一樣的。
2、存儲大小:
localStorage和sessionStorage的存儲數據大小一般都是:5MB
3、存儲位置:
localStorage和sessionStorage都保存在客戶端,不與服務器進行交互通信。
4、存儲類型:
localStorage和sessionStorage只能存儲字符串類型,對於復雜的對象可以使用ECMAScript提供的JSON對象的stringify和parse來處理
WebStorage由於不會傳送到服務器,所以更安全,也能節省網絡流量,存儲數據也比cookie要大,存儲在本地也使得讀取數據更快,因為存在偽造問題,不建議存儲敏感信息
每日壹題:
var 、let 、const 區別?
- var 和 let 用以聲明變量,const 用於聲明只讀的常量;
- var 聲明的變量,不存在塊級作用域,在全局范圍內都有效,let 和 const 聲明的,只在它所在的代碼塊內有效;
- let 和 const 不存在像 var 那樣的 “變量提升” 現象,所以 var 定義變量可以先使用,后聲明,而 let 和 const 只可先聲明,后使用;
- let 聲明的變量存在暫時性死區,即只要塊級作用域中存在 let,那么它所聲明的變量就綁定了這個區域,不再受外部的影響;
- let 不允許在相同作用域內,重復聲明同一個變量;
- const 在聲明時必須初始化賦值,一旦聲明,其聲明的值就不允許改變,更不允許重復聲明;