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發送請求。


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



6會員
5內容數
半路出家的後端工程師(現在身分是後端工程師/blog作家),會叫夏普先生是因為我常用C#(#念作sharp)做開發,這邊會不定期分享轉職的心得、技術文章等等,希望能和大家多多交流交流
留言0
查看全部
發表第一個留言支持創作者!
夏普先生的沙龍 的其他內容
好的,有一陣子沒更新了,因為最近真的太忙了,又過了中秋節及國慶,變胖了一些,我要來減肥一下了哈,好啦,回到正題,接續我第一篇發的文章,不過這篇文章很長,可以挑想看的地方看就好(*´艸`*)
我要從哪邊開始 相信會進來看這篇文章的你或許是好奇,也或許是想要轉職但不知道該從何處開始的人,總之要是有興趣的話就再往下看,我會依照我的經驗作分享。 通常轉職工程師的人大部分是沒有相關背景的人,也就是你並非本科系,或是大學時可能修過資訊相關的課程但早忘光了,這邊我會以完全沒有相關背景的人做參考,
一、評估轉職成本 我在轉職前是一名公務員,到時會再跟各位分享我詳細的心路歷程,至於轉職軟體工程師前我爬了許多資料,也評估過機會成本,以及詳細考慮過我適不適合這行(比如我只是暫時累了想換一下心情而已,抑或是我真的不適合我現在公務員的工作等等),不論何種理由,任何人在轉職前必須分析自己的現況
好的,有一陣子沒更新了,因為最近真的太忙了,又過了中秋節及國慶,變胖了一些,我要來減肥一下了哈,好啦,回到正題,接續我第一篇發的文章,不過這篇文章很長,可以挑想看的地方看就好(*´艸`*)
我要從哪邊開始 相信會進來看這篇文章的你或許是好奇,也或許是想要轉職但不知道該從何處開始的人,總之要是有興趣的話就再往下看,我會依照我的經驗作分享。 通常轉職工程師的人大部分是沒有相關背景的人,也就是你並非本科系,或是大學時可能修過資訊相關的課程但早忘光了,這邊我會以完全沒有相關背景的人做參考,
一、評估轉職成本 我在轉職前是一名公務員,到時會再跟各位分享我詳細的心路歷程,至於轉職軟體工程師前我爬了許多資料,也評估過機會成本,以及詳細考慮過我適不適合這行(比如我只是暫時累了想換一下心情而已,抑或是我真的不適合我現在公務員的工作等等),不論何種理由,任何人在轉職前必須分析自己的現況
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
之前在 學習筆記 | 關於 Cookie、Session、Token 這篇筆記有提到,瀏覽器需要帶著使用者的身分訊息或經過身分驗證後取得的Token(令牌),才能向伺服器請求資源,那麼瀏覽器就必須有個空間來儲存這些 Token 資訊,這篇就是要來記錄瀏覽器常見的儲存空間啦~
Thumbnail
屬於歐盟一員的德國,依據歐盟所修訂之《歐盟通用數據保護條例》(GDPR),頒布聯邦數據保護法(BDSG),本法第51條即規定有關「同意(Einwilligung)」的內涵,如該條第2項規定: 「如果被影響人的同意係經過一份涉及其他情況的書面聲明獲得的,則對同意的請求必須以易於理解和易於獲取的方式進
Thumbnail
深入了解使用 Cookie 實現客戶端數據存儲的技巧和最佳實踐。本文詳細解釋了 Cookie 的基本概念、限制、原生寫法,並推薦了一個實用的 JavaScript Cookie 套件,附帶實用 Demo 和原始碼。
狀況 在餐廳清單這項專案時我曾向在新增一間餐廳資料或是修改餐廳資料跳回首頁時跳出一段訊息提醒使用者操作成功。 第一次出手與失敗 定義問題 尋找 撥雲見月 於是我馬上就來測試了一下最後的結果如下:
Thumbnail
隨著2023年第三方cookie消失已成定局,數位廣告(以下稱程序化廣告)仰賴第三方匿名資料作為投放鎖定的方式注定走入歷史。眼前數據轉型之所以嚴峻,關鍵在於程序化廣告最終曝光端是使用者瀏覽器的cookie,該 cookie 透過網頁上的追蹤碼,回傳到數據資料庫,進一步依據使用者的數位瀏覽軌跡進行貼標
Thumbnail
現任台灣奧美數位企劃副總監,數位行銷原生代。從小就不喜歡看電視、慢熟、難聊,從沒想過有天會進廣告公司,以協助品牌和消費者溝通為業,喜愛著這個不單調的工作。熱衷學習和自我突破、持續對僵化和懶散過敏。
Thumbnail
文、圖/潮網科技提供   Cookie 末日帶來的焦慮讓我想起了 Y2K 恐慌 (Year 2000 Problem),當時每個人都認為電腦程式錯誤會破壞掌管銀行、太空旅行、核能管理等一切事物的數位系統。然而「Y2K」和「第三方 cookie 終結」之間一個很大的區別是:前者最
Cookie 的誕生 若先從一個最為陽春的網路溝通方式來看,當一個 Client 端和一個 Server 端發送請求,並由 Server 端處理後進行響應,這一整個過程會因為 http 的無狀態特性,
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
之前在 學習筆記 | 關於 Cookie、Session、Token 這篇筆記有提到,瀏覽器需要帶著使用者的身分訊息或經過身分驗證後取得的Token(令牌),才能向伺服器請求資源,那麼瀏覽器就必須有個空間來儲存這些 Token 資訊,這篇就是要來記錄瀏覽器常見的儲存空間啦~
Thumbnail
屬於歐盟一員的德國,依據歐盟所修訂之《歐盟通用數據保護條例》(GDPR),頒布聯邦數據保護法(BDSG),本法第51條即規定有關「同意(Einwilligung)」的內涵,如該條第2項規定: 「如果被影響人的同意係經過一份涉及其他情況的書面聲明獲得的,則對同意的請求必須以易於理解和易於獲取的方式進
Thumbnail
深入了解使用 Cookie 實現客戶端數據存儲的技巧和最佳實踐。本文詳細解釋了 Cookie 的基本概念、限制、原生寫法,並推薦了一個實用的 JavaScript Cookie 套件,附帶實用 Demo 和原始碼。
狀況 在餐廳清單這項專案時我曾向在新增一間餐廳資料或是修改餐廳資料跳回首頁時跳出一段訊息提醒使用者操作成功。 第一次出手與失敗 定義問題 尋找 撥雲見月 於是我馬上就來測試了一下最後的結果如下:
Thumbnail
隨著2023年第三方cookie消失已成定局,數位廣告(以下稱程序化廣告)仰賴第三方匿名資料作為投放鎖定的方式注定走入歷史。眼前數據轉型之所以嚴峻,關鍵在於程序化廣告最終曝光端是使用者瀏覽器的cookie,該 cookie 透過網頁上的追蹤碼,回傳到數據資料庫,進一步依據使用者的數位瀏覽軌跡進行貼標
Thumbnail
現任台灣奧美數位企劃副總監,數位行銷原生代。從小就不喜歡看電視、慢熟、難聊,從沒想過有天會進廣告公司,以協助品牌和消費者溝通為業,喜愛著這個不單調的工作。熱衷學習和自我突破、持續對僵化和懶散過敏。
Thumbnail
文、圖/潮網科技提供   Cookie 末日帶來的焦慮讓我想起了 Y2K 恐慌 (Year 2000 Problem),當時每個人都認為電腦程式錯誤會破壞掌管銀行、太空旅行、核能管理等一切事物的數位系統。然而「Y2K」和「第三方 cookie 終結」之間一個很大的區別是:前者最
Cookie 的誕生 若先從一個最為陽春的網路溝通方式來看,當一個 Client 端和一個 Server 端發送請求,並由 Server 端處理後進行響應,這一整個過程會因為 http 的無狀態特性,