session、cookie、sessionStorage、localStorage的簡要理解


一、cookie和session

  首先 session 和 cookie 用於瀏覽器客戶端與服務端數據交互,通過會話的方式跟蹤瀏覽器用戶身份。

1、cookie

  (1)、一般由服務器生成,可以設置失效時間,如果是瀏覽器生成則默認瀏覽器關閉后失效;

  (2)、與服務器端通信,每次請求都放在 http 請求頭中;

  (3)、數據存儲在內存中,數據大小為4KB,保存在類型為字符串;

2、session

   sessioncookie的作用有點類似,都是為了存儲用戶相關的信息。不同的是,cookie是存儲在本地瀏覽器,而session存儲在服務器。存儲在服務器的數據會更加的安全,不容易被竊取。但存儲在服務器也有一定的弊端,就是會占用服務器的資源,但現在服務器已經發展至今,一些session信息還是綽綽有余的。

3. session和cookie的結合使用

  web開發發展至今,cookiesession的使用已經出現了一些非常成熟的方案。在如今的市場或者企業里,一般有兩種存儲方式:

 

1)、存儲在服務端:通過cookie存儲一個session_id,然后具體的數據則是保存在session中。如果用戶已經登錄,則服務器會在cookie中保存一個session_id,下次再次請求的時候,會把該session_id攜帶上來,服務器根據session_idsession庫中獲取用戶的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 在聲明時必須初始化賦值,一旦聲明,其聲明的值就不允許改變,更不允許重復聲明;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM