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
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
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 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
前言 現在的前端需求已經越來越高,要考慮HTML及CSS的切版美觀程度,以及React以及Flutter所提出的元件(Componet、widget)觀念,也就是將元件模組化,使元件可以更動態的被程式運行,而不用靜態的客製化每一個介面。開發一個好的元件可以提升整體的開發速度,讓任何使用元件的開發者
Thumbnail
前言 現在的前端需求已經越來越高,要考慮HTML及CSS的切版美觀程度,以及React以及Flutter所提出的元件(Componet、widget)觀念,也就是將元件模組化,使元件可以更動態的被程式運行,而不用靜態的客製化每一個介面。開發一個好的元件可以提升整體的開發速度,讓任何使用元件的開發者
Thumbnail
這是為了搭建自己想要的工作流而開始的研究工作。
Thumbnail
這是為了搭建自己想要的工作流而開始的研究工作。
Thumbnail
之前在 學習筆記 | 關於 Cookie、Session、Token 這篇筆記有提到,瀏覽器需要帶著使用者的身分訊息或經過身分驗證後取得的Token(令牌),才能向伺服器請求資源,那麼瀏覽器就必須有個空間來儲存這些 Token 資訊,這篇就是要來記錄瀏覽器常見的儲存空間啦~
Thumbnail
之前在 學習筆記 | 關於 Cookie、Session、Token 這篇筆記有提到,瀏覽器需要帶著使用者的身分訊息或經過身分驗證後取得的Token(令牌),才能向伺服器請求資源,那麼瀏覽器就必須有個空間來儲存這些 Token 資訊,這篇就是要來記錄瀏覽器常見的儲存空間啦~
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News