學習筆記 | 瀏覽器儲存空間:Cookie、LocalStorage 和 SessionStorage

閱讀時間約 4 分鐘


之前在 學習筆記 | 關於 Cookie、Session、Token 這篇筆記有提到,瀏覽器需要帶著使用者的身分訊息或經過身分驗證後取得的Token(令牌),才能向伺服器請求資源,那麼瀏覽器就必須有個空間來儲存這些 Token 資訊,這篇就是要來記錄瀏覽器常見的儲存空間啦~

在 Chrome 的開發者工具內找到 Application,就可以看到瀏覽器的儲存空間 Storage 了,這篇主要記錄最常用的三種:Cookie、LocalStorage 和 SessionStorage

Cookie

Cookie 是小型文字檔,有以下特性:

1. 可以設定失效時間

2. 夾帶在 header 裡,會隨著網路請求一起發送到 server 端

3. 大小約 4kb(儲存量偏小)

4. 操作方式只有一種,所有的新增修改刪除都是同樣寫法

document.cookie = "name=Andy"  // 新增一個cookie 
document.cookie // 讀取全部cookie
document.cookie = "name=;" // 移除name之cookie

Storage

LocalStorage 和 SessionStorage 的概念基本都是相同的,特性是:

1. 大小預設有 5mb,實際會依照瀏覽器不同而有所差異

2. 儲存字串資料,其他類型可用 JSON.stringify()存入,用JSON.parse()取回

3. 無痕或隱私模式下無法讀取

而兩者最大區別在於:

  • LocalStorage 如果不手動刪除就會一直保留在瀏覽器內
  • SessionStorage 僅會存在當前的頁面,如果關閉瀏覽器或重新整理,資料就會被清除

LocalStorage 和 SessionStorage 的操作也相同,都是以key/value 的方式進行CRUD,這邊就以 LocalStorage 進行操作:

  • 存取/修改 setItem()
localStorage.setItem(key,vale)
// key 相當於屬性名稱,value 則是我們要存入的值

ex:
localStorage.setItem('token','123456')
  • 讀取 getItem()
localStorage.getItem(key)
// 讀取時就調用我們先前存入的 key,此時若 Storage 內沒有資料,會回傳 null

ex:
localStorage.getItem('token') // '123456'
  • 清空 removeItem() / clear()
localStorage.removeItem(key)  // 刪特定資料
localStorage.clear() // 清空所有資料,此時若 Storage 內沒有資料,會回傳 undefined

ex:
localStorage.removeItem('token')

最後,使用瀏覽器儲存空間要注意的是「安全性問題」,由於這些存取空間只要打開開發者工具就能看到,像 LocalStorage 如果沒有清空,就毫無安全性可言,任何人都可以對其進行修改,使用上務必謹慎!


另外有個小小備註,一開始初學的我認為 SessionStorage 跟 先前的筆記中的 session 是同樣的,所以一直無法理解,後來才發現,原來它們是完全不同的呀!SessionStorage 是瀏覽器端的儲存空間,而 session 則是伺服器端用來儲存使用者狀態的機制,雖然名稱很像但功能不一樣呢😯


參考資料:
Cookie、LocalStorage、SessionStorage 差異
網頁資料儲存 — cookie、local Storage、Session Storage


我是Amber,前端學習中,歡迎交流討論🧸

22會員
22內容數
留言0
查看全部
發表第一個留言支持創作者!
Amber hh的沙龍 的其他內容
上一篇筆記講到了瀏覽器與伺服器之間,經過身分驗證後,就會改以 Token 這個令牌作為通行證,不需要再反覆驗證,那麼這篇紀錄的就是目前最常使用的 JWT (JSON Web Token) 啦! 可以搭配 JWT 的網站來玩看看 JWT(JSON Web Token) 顧名思義就是以 JSON
延續先前的筆記,「網路請求」是瀏覽器和伺服器的溝通橋梁,目的是為了取得資料庫內的資源,除了 CORS 這種瀏覽器本身的阻擋機制,伺服器也會需要進行「身分驗證或授權」這道阻擋,並不是使用者有帶上 header 告知身分,就一定可以把資料 response 回來的。
那麼「我要什麼資料」就需要告訴伺服器特定的內容啦,舉例來說: 我要登入,就必須把「帳號」和「密碼」一起帶在請求內,發送給後端進行驗證
上篇記錄了關於 HTTP request 的筆記,這篇則是對於請求的回應紀錄~
上一篇【瀏覽器與伺服器是如何溝通的?】有說瀏覽器和伺服器的溝通橋樑是「網路請求」,這篇就來記錄一下,我目前學習到的網路請求是什麼~
身為一個非本科新手工程師,對於網路知識還是有許多疑惑之處,像是我在編輯器上寫了數十行的程式碼,那它們是怎麼透過終端機的指令被運行起來,讓我可以一邊開發一邊預覽結果呢?
上一篇筆記講到了瀏覽器與伺服器之間,經過身分驗證後,就會改以 Token 這個令牌作為通行證,不需要再反覆驗證,那麼這篇紀錄的就是目前最常使用的 JWT (JSON Web Token) 啦! 可以搭配 JWT 的網站來玩看看 JWT(JSON Web Token) 顧名思義就是以 JSON
延續先前的筆記,「網路請求」是瀏覽器和伺服器的溝通橋梁,目的是為了取得資料庫內的資源,除了 CORS 這種瀏覽器本身的阻擋機制,伺服器也會需要進行「身分驗證或授權」這道阻擋,並不是使用者有帶上 header 告知身分,就一定可以把資料 response 回來的。
那麼「我要什麼資料」就需要告訴伺服器特定的內容啦,舉例來說: 我要登入,就必須把「帳號」和「密碼」一起帶在請求內,發送給後端進行驗證
上篇記錄了關於 HTTP request 的筆記,這篇則是對於請求的回應紀錄~
上一篇【瀏覽器與伺服器是如何溝通的?】有說瀏覽器和伺服器的溝通橋樑是「網路請求」,這篇就來記錄一下,我目前學習到的網路請求是什麼~
身為一個非本科新手工程師,對於網路知識還是有許多疑惑之處,像是我在編輯器上寫了數十行的程式碼,那它們是怎麼透過終端機的指令被運行起來,讓我可以一邊開發一邊預覽結果呢?
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
財經M平方的2022年總經論壇學習,就所聽的內容繼續延伸、挖掘、佐證。
★研究證實,心像(腦中預演)能帶來超水準表現,幾乎所有領域的頂尖人物都有清晰的心像。他們過的是「逆向生活」,先創造一個未來,讓自己身在其中,接著進入心流,專心致志實現那一種未來。 ●有些運動員和參與者,會把自己人生中最完美的一天,描述為「playing in the zone─進入心流」。
Thumbnail
因為當年看書找資料的時候很希望能有這樣的大致整理文,專門針對飲食方面,列一下大概特色,這樣以後要跟人解釋分享的時候多好用啊! 主要以生酮、全植物蔬食、自然療法/自然醫學、原始點、古中醫這幾個我自己確實實驗過並且在短期或長期真正有帶來幫助的為主。
Thumbnail
我是設計方面0經驗的新人,在這堂課上獲益良多 目前在Google UX Design課程上了一陣子,已經上到第五課 (持續努力中💪🏻) 想藉由發文寫下學習筆記,讓自己在整理內容的時候再次吸收! 後續會陸續寫下所學到的內容,歡迎各位一同交流🙌🏻😊 - 做為第一篇文章 想先分享第一堂課所提及
Thumbnail
2020年9月6日,我冠上了一個新的身份,高雄市立空中大學學生的身份,朋友問我,我選修什麼科系,我回答「科技管理」。不少人感到困惑,這是什麼樣的科系,或者直覺認為這是有關資工、資管、資處方面的學系。 其實原先我也不了解,直到我開始了我第一門專業基礎必修課「科技管理」,在導師吳欣穎系主任的講解下,慢
Thumbnail
前言:大學時期因為熱衷於打桌球,取捨之下放棄參加了同時段的運動傷害防護社。但隨著在日常生活中用到肌貼協助親友解決疼痛的機會越來越高,加上自己也更想了解物理治療於運動傷害的應用,決定趁著研究所能盡量參與,多少加強自己貼紮的技術。
Thumbnail
把握弱連結,創造人脈致勝關鍵這標題商業的可以,但是聽了之後你會覺得,歐陽老師的講座既有乾貨也有雞湯,講得是人脈,卻有很多實用的做人處事智慧。
Thumbnail
用途 找到三個足弓,可用來決定以「舒適」(非矯正)為目的的墊片應該怎麼墊。也可用在高跟鞋的修飾上。 步驟 畫出足部輪廓 點出5th MTP Base與外側足弓高點 點出5th MTP head的頂點、遠點、近點 點出舟狀骨頂點與內側足弓軟組織高點 點出1st MTP head
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
財經M平方的2022年總經論壇學習,就所聽的內容繼續延伸、挖掘、佐證。
★研究證實,心像(腦中預演)能帶來超水準表現,幾乎所有領域的頂尖人物都有清晰的心像。他們過的是「逆向生活」,先創造一個未來,讓自己身在其中,接著進入心流,專心致志實現那一種未來。 ●有些運動員和參與者,會把自己人生中最完美的一天,描述為「playing in the zone─進入心流」。
Thumbnail
因為當年看書找資料的時候很希望能有這樣的大致整理文,專門針對飲食方面,列一下大概特色,這樣以後要跟人解釋分享的時候多好用啊! 主要以生酮、全植物蔬食、自然療法/自然醫學、原始點、古中醫這幾個我自己確實實驗過並且在短期或長期真正有帶來幫助的為主。
Thumbnail
我是設計方面0經驗的新人,在這堂課上獲益良多 目前在Google UX Design課程上了一陣子,已經上到第五課 (持續努力中💪🏻) 想藉由發文寫下學習筆記,讓自己在整理內容的時候再次吸收! 後續會陸續寫下所學到的內容,歡迎各位一同交流🙌🏻😊 - 做為第一篇文章 想先分享第一堂課所提及
Thumbnail
2020年9月6日,我冠上了一個新的身份,高雄市立空中大學學生的身份,朋友問我,我選修什麼科系,我回答「科技管理」。不少人感到困惑,這是什麼樣的科系,或者直覺認為這是有關資工、資管、資處方面的學系。 其實原先我也不了解,直到我開始了我第一門專業基礎必修課「科技管理」,在導師吳欣穎系主任的講解下,慢
Thumbnail
前言:大學時期因為熱衷於打桌球,取捨之下放棄參加了同時段的運動傷害防護社。但隨著在日常生活中用到肌貼協助親友解決疼痛的機會越來越高,加上自己也更想了解物理治療於運動傷害的應用,決定趁著研究所能盡量參與,多少加強自己貼紮的技術。
Thumbnail
把握弱連結,創造人脈致勝關鍵這標題商業的可以,但是聽了之後你會覺得,歐陽老師的講座既有乾貨也有雞湯,講得是人脈,卻有很多實用的做人處事智慧。
Thumbnail
用途 找到三個足弓,可用來決定以「舒適」(非矯正)為目的的墊片應該怎麼墊。也可用在高跟鞋的修飾上。 步驟 畫出足部輪廓 點出5th MTP Base與外側足弓高點 點出5th MTP head的頂點、遠點、近點 點出舟狀骨頂點與內側足弓軟組織高點 點出1st MTP head