cookie、sessionStorage、localStorage、session的差異

更新 發佈閱讀 4 分鐘

前言

有好一段時間沒發文了,已經隔了有半年,其實我一直想找時間寫,不過真的非常困難,因為工作上開發一些新的系統、也要整合其他系統及維護既有的系統外,另外也有主導一些專案進行,尤其是主導專案是第一次做,因此也學到不少東西,不過主導的專案最近也完成的差不多了,開發上有遇到的問題想說趁記憶猶新時做個紀錄,不然我怕忘記(๑´ㅂ`๑)

概述

工作上常使用的架構如下:

  1. 前端:Vite做開發
  2. 後端:Web API、Console排程
  3. DB: SQL Server、Stored procedure

流程常常是我寫API去DB撈資料,轉成JSON給前端,前端工程師將資料綁定到v-model上做呈現,但前端工程師也是會排版和做一些簡單的資料處理。並且系統在登入時會呼叫API並且後端經過一連串的驗證邏輯後會回傳token給前端,前端將收到的token存入cookie裡面,然後每次呼叫API時都會對cookie存的token做驗證。而因為新的專案有需要用到sessionStorage,因此就去查詢這些到底有什麼差別,以前有聽過這些但都沒有仔細去研究,現在決定做個紀錄

四者的差異如下:

儲存位置不同

簡單來說cookie、sessionStorage、localStorage存於client端,而只有session是存於server端的。

生命週期

  1. cookie: 有分為記憶體cookie和硬碟cookie兩種。如果有設定expires到期時間就是硬碟cookie,瀏覽器關掉後再打開還是存在,若是沒設定的話就屬於記憶體cookie,關閉瀏覽器就會失效了。
  2. localStorage:存在於同一個瀏覽器內,可以跨分頁,存於硬碟裡面永久有效除非手動刪除。
  3. sessionStorage:只能在同一分頁有效,要是新開一個分頁就讀不到了。因此關掉瀏覽器或是關掉該分頁都會失效。
  4. session:存於server端,上面3個都是存於client端,但session的運作方式比較特別,就是值是存於server,回傳給client端的是Session ID,Session ID會存於cookie裡面,因此生命週期如同一般cookie,要是沒特別設定時間就是關閉瀏覽器就失效了

使用方式

  1. cookie: document.cookie = name + '=' + value 這種方式存入,其實也類似key、value方式
  2. localStorage:以localStorage.setItem('name','peter')這種key、value方式做儲存,取值的話就是localStorage.getItem('name')用key值來處理,用法和javascript物件幾乎一樣,也和C#的Dictionary類似。但是有一點要注意,就是value只能儲存字串,因此當value是陣列或物件的話,必須使用JSON.stringify()來轉成字串儲存,而讀取資料時必須將讀出的資料使用JSON.parse()轉為陣列或物件。
  3. sessionStorage跟localStorage使用方式一樣。
  4. session: Session["CurrentTime"] = DateTime.Now.ToString(),其實也是key、value方式做處理。

所以上面的使用方式都是key、value,因此不管儲存還是讀取資料的用法都幾乎一樣。

存放大小

cookie:4KB

localStorage、sessionStorage大約5MB,因此理所當然適合用來儲存比較複雜的資料

HTTP請求

cookie:每次請求都會被自動夾帶在HTTP的Header裡面

localStorage、sessionStorage: 只存在於client端,不會參與和server溝通,不過要注意的是這邊指的不會參與和server溝通指的其實是不自動發送,所以並不會像cookie一樣被自動夾帶在header裡面,但還是可以手動發AXIOS將資料包進data物件裡面對API發送請求。


大致整理一下他們的差別,不然怕忘記,趁現在比較有空趕快做個紀錄(๑•́ ₃ •̀๑)



留言
avatar-img
留言分享你的想法!
avatar-img
夏普先生的沙龍
6會員
5內容數
半路出家的後端工程師(現在身分是後端工程師/blog作家),會叫夏普先生是因為我常用C#(#念作sharp)做開發,這邊會不定期分享轉職的心得、技術文章等等,希望能和大家多多交流交流
夏普先生的沙龍的其他內容
2024/09/03
最近有收到許多讀者來信詢問關於轉職的事情,老實說能有機會幫助到讀者覺得滿開心的,我的經驗分享能夠幫助到一些在轉職路上迷惘的人,這邊有一些小小的心得要說明一下
2024/09/03
最近有收到許多讀者來信詢問關於轉職的事情,老實說能有機會幫助到讀者覺得滿開心的,我的經驗分享能夠幫助到一些在轉職路上迷惘的人,這邊有一些小小的心得要說明一下
2023/10/14
好的,有一陣子沒更新了,因為最近真的太忙了,又過了中秋節及國慶,變胖了一些,我要來減肥一下了哈,好啦,回到正題,接續我第一篇發的文章,不過這篇文章很長,可以挑想看的地方看就好(*´艸`*)
Thumbnail
2023/10/14
好的,有一陣子沒更新了,因為最近真的太忙了,又過了中秋節及國慶,變胖了一些,我要來減肥一下了哈,好啦,回到正題,接續我第一篇發的文章,不過這篇文章很長,可以挑想看的地方看就好(*´艸`*)
Thumbnail
2023/08/12
我要從哪邊開始 相信會進來看這篇文章的你或許是好奇,也或許是想要轉職但不知道該從何處開始的人,總之要是有興趣的話就再往下看,我會依照我的經驗作分享。 通常轉職工程師的人大部分是沒有相關背景的人,也就是你並非本科系,或是大學時可能修過資訊相關的課程但早忘光了,這邊我會以完全沒有相關背景的人做參考,
Thumbnail
2023/08/12
我要從哪邊開始 相信會進來看這篇文章的你或許是好奇,也或許是想要轉職但不知道該從何處開始的人,總之要是有興趣的話就再往下看,我會依照我的經驗作分享。 通常轉職工程師的人大部分是沒有相關背景的人,也就是你並非本科系,或是大學時可能修過資訊相關的課程但早忘光了,這邊我會以完全沒有相關背景的人做參考,
Thumbnail
看更多
你可能也想看
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
※ 靜態資源回傳 ※ 什麼是靜態資源: 定義:是指事先準備好的資源,這些資源在伺服器上是靜態的、不會隨著每個請求而改變。 資源通常包括: 靜態 HTML 文件。 CSS。 圖像(Image)。 Video。 字體文件:google fonts。 favicon:網頁名稱旁邊的ico
Thumbnail
※ 靜態資源回傳 ※ 什麼是靜態資源: 定義:是指事先準備好的資源,這些資源在伺服器上是靜態的、不會隨著每個請求而改變。 資源通常包括: 靜態 HTML 文件。 CSS。 圖像(Image)。 Video。 字體文件:google fonts。 favicon:網頁名稱旁邊的ico
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News