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
6會員
5內容數
半路出家的後端工程師(現在身分是後端工程師/blog作家),會叫夏普先生是因為我常用C#(#念作sharp)做開發,這邊會不定期分享轉職的心得、技術文章等等,希望能和大家多多交流交流
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
夏普先生的沙龍 的其他內容
好的,有一陣子沒更新了,因為最近真的太忙了,又過了中秋節及國慶,變胖了一些,我要來減肥一下了哈,好啦,回到正題,接續我第一篇發的文章,不過這篇文章很長,可以挑想看的地方看就好(*´艸`*)
我要從哪邊開始 相信會進來看這篇文章的你或許是好奇,也或許是想要轉職但不知道該從何處開始的人,總之要是有興趣的話就再往下看,我會依照我的經驗作分享。 通常轉職工程師的人大部分是沒有相關背景的人,也就是你並非本科系,或是大學時可能修過資訊相關的課程但早忘光了,這邊我會以完全沒有相關背景的人做參考,
一、評估轉職成本 我在轉職前是一名公務員,到時會再跟各位分享我詳細的心路歷程,至於轉職軟體工程師前我爬了許多資料,也評估過機會成本,以及詳細考慮過我適不適合這行(比如我只是暫時累了想換一下心情而已,抑或是我真的不適合我現在公務員的工作等等),不論何種理由,任何人在轉職前必須分析自己的現況
好的,有一陣子沒更新了,因為最近真的太忙了,又過了中秋節及國慶,變胖了一些,我要來減肥一下了哈,好啦,回到正題,接續我第一篇發的文章,不過這篇文章很長,可以挑想看的地方看就好(*´艸`*)
我要從哪邊開始 相信會進來看這篇文章的你或許是好奇,也或許是想要轉職但不知道該從何處開始的人,總之要是有興趣的話就再往下看,我會依照我的經驗作分享。 通常轉職工程師的人大部分是沒有相關背景的人,也就是你並非本科系,或是大學時可能修過資訊相關的課程但早忘光了,這邊我會以完全沒有相關背景的人做參考,
一、評估轉職成本 我在轉職前是一名公務員,到時會再跟各位分享我詳細的心路歷程,至於轉職軟體工程師前我爬了許多資料,也評估過機會成本,以及詳細考慮過我適不適合這行(比如我只是暫時累了想換一下心情而已,抑或是我真的不適合我現在公務員的工作等等),不論何種理由,任何人在轉職前必須分析自己的現況
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
今天寫文章來學習什麼是「第一方 Cookies」。 ## 1. Cookie在LinkedIn廣告中的角色 根據Linkedin的文章[1], Cookie 是被設置在網站訪問者的 Web瀏覽器上, 可以幫助 Linkedin 確定廣告被展示給哪些成員, 是衡量廣告效果,改
(1) 收集用戶名單,例如 Email 和手機,未來可做廣告受眾再行銷,例如 FB 廣告、GDN 廣告、Email發送。 (2) 在網站追蹤中,用 GTM 實施「增強型轉換」,讓每一個轉換數據發送時都帶有第一方數據,能讓轉換追蹤更精準,減少受 Cookie 政策的影響。 (3)
Thumbnail
前陣子忘了方格子帳密,今天重新登入。距離上篇文章也已經過了將近一年,對於站上的修改還需要一些時間習慣,也還在揣摩該寫哪些文章,或者就直接寫下去?
Thumbnail
時間悄悄在生活的間隙中融化,每個當下都走在過去期盼的路上,我們望著同片遠方,永遠是那麼健忘。
Thumbnail
與 cookie 相比,localStorage 與 sessionStorage 的機制相對單純,兩者皆是瀏覽器中的儲存空間,與 cookie 最大的不同在於:localStorage 與 ⋯⋯
Thumbnail
在瀏覽器環境中有許多的儲存空間,想要查看這些空間的話,可以透過「chrome > Dev Tools > Application > Storage」即能進行查看。 瀏覽器內存空間的差異不僅常常被拿來被當作面試考題,在實務開發中更扮演舉足輕重的角色,今天就想透過這系列的文章深度了解這些瀏覽器內存⋯
Thumbnail
為什麼要登出使用者? 安全性:防止未經授權的人,在使用者暫離時使用系統,這在公用或共享電腦的環境中尤其重要。 資料保護:只要使用者處於登入狀態,就會暴露在個人資料被他人操縱或利用的風險中,因此登出閒置使用者對資安也很重要。 如何在 Vue 3 專案中實作此功能?
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
介紹 大家第一次聽到,static 肯定很陌生。簡單來說,這個東西就是拿來存放一些我們經常會用到的檔案,比方說: CSS、JS、Image、Audio、Video...... 只要是網頁上可能會用到的檔案,我們基本上都會存在 static 當中,方便我們可以在不同路徑中,快速的存取這些檔案
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
今天寫文章來學習什麼是「第一方 Cookies」。 ## 1. Cookie在LinkedIn廣告中的角色 根據Linkedin的文章[1], Cookie 是被設置在網站訪問者的 Web瀏覽器上, 可以幫助 Linkedin 確定廣告被展示給哪些成員, 是衡量廣告效果,改
(1) 收集用戶名單,例如 Email 和手機,未來可做廣告受眾再行銷,例如 FB 廣告、GDN 廣告、Email發送。 (2) 在網站追蹤中,用 GTM 實施「增強型轉換」,讓每一個轉換數據發送時都帶有第一方數據,能讓轉換追蹤更精準,減少受 Cookie 政策的影響。 (3)
Thumbnail
前陣子忘了方格子帳密,今天重新登入。距離上篇文章也已經過了將近一年,對於站上的修改還需要一些時間習慣,也還在揣摩該寫哪些文章,或者就直接寫下去?
Thumbnail
時間悄悄在生活的間隙中融化,每個當下都走在過去期盼的路上,我們望著同片遠方,永遠是那麼健忘。
Thumbnail
與 cookie 相比,localStorage 與 sessionStorage 的機制相對單純,兩者皆是瀏覽器中的儲存空間,與 cookie 最大的不同在於:localStorage 與 ⋯⋯
Thumbnail
在瀏覽器環境中有許多的儲存空間,想要查看這些空間的話,可以透過「chrome > Dev Tools > Application > Storage」即能進行查看。 瀏覽器內存空間的差異不僅常常被拿來被當作面試考題,在實務開發中更扮演舉足輕重的角色,今天就想透過這系列的文章深度了解這些瀏覽器內存⋯
Thumbnail
為什麼要登出使用者? 安全性:防止未經授權的人,在使用者暫離時使用系統,這在公用或共享電腦的環境中尤其重要。 資料保護:只要使用者處於登入狀態,就會暴露在個人資料被他人操縱或利用的風險中,因此登出閒置使用者對資安也很重要。 如何在 Vue 3 專案中實作此功能?
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
介紹 大家第一次聽到,static 肯定很陌生。簡單來說,這個東西就是拿來存放一些我們經常會用到的檔案,比方說: CSS、JS、Image、Audio、Video...... 只要是網頁上可能會用到的檔案,我們基本上都會存在 static 當中,方便我們可以在不同路徑中,快速的存取這些檔案