国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端數(shù)據(jù)存儲系列(Cookie、Session、localStorage、sessionStorage、Token)

這篇具有很好參考價值的文章主要介紹了前端數(shù)據(jù)存儲系列(Cookie、Session、localStorage、sessionStorage、Token)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Cookie和Session的聯(lián)系與區(qū)別

簡述:
Session比Cookie安全,Session是存儲在服務(wù)器端的,Cookie是存儲在客戶端的
背景:
HTTP 是無狀態(tài)協(xié)議,說明它不能以狀態(tài)來區(qū)分和管理請求和響應(yīng)。也就是說,服務(wù)器單從網(wǎng)絡(luò)連接上無從知道客戶身份。
于是想說客戶端們頒發(fā)一個通行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣服務(wù)器就能從通行證上確認客戶身份了。這就是Cookie的工作原理。

什么是Cookie(小甜餅?)

Cookie是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息,實際上Cookie是服務(wù)器在本地機器上存儲的一小段文本,并隨著每次請求發(fā)送到服務(wù)器。
Cookie會根據(jù)響應(yīng)報文里的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie。當(dāng)下客戶端再向服務(wù)端發(fā)起請求時,客戶端會自動在請求報文中加入Cookie值之后發(fā)送出去

保存時間
默認情況下,當(dāng)瀏覽器關(guān)閉后,Cookie數(shù)據(jù)被銷毀

持久化存儲:
setMaxAge(int seconds)
正數(shù):將Cookie數(shù)據(jù)寫到硬盤的文件中。持久化存儲。并指定cookie存活時間,時間到后,cookie文件自動失效
負數(shù):默認值
零:刪除cookie信息

應(yīng)用
cookie一般用于存出少量的不太敏感的數(shù)據(jù)
在不登錄的情況下,完成服務(wù)器對客戶端的身份識別

缺點
內(nèi)存小,限制 4KB。數(shù)量限制每個瀏覽器實現(xiàn)不一樣,chrome 是 50 個。
默認有跨域限制,不可設(shè)置跨域共享 cookie,不可設(shè)置跨域傳遞 cookie

什么是Session

session本意是指客戶端與服務(wù)器的會話狀態(tài),由于憑證存儲到了服務(wù)端,后來也把這些存在服務(wù)端的信息稱為session,比如現(xiàn)在服務(wù)器決定自己維護登錄狀態(tài),僅發(fā)給客戶端一個key,然后在自己維護一個key-value表,如果請求中有key,并且在表中可以找到對應(yīng)的value,則視為合法。

銷毀時間
session什么時候被銷毀?

  1. 服務(wù)器關(guān)閉
  2. session對象調(diào)用invalidate() 。
  3. session默認失效時間 30分鐘 選擇性配置修改
    缺點
    比如 A 服務(wù)器存儲了 Session,就是做了負載均衡后,假如一段時間內(nèi) A 的訪問量激增,會轉(zhuǎn)發(fā)到 B 進行訪問,但是 B 服務(wù)器并沒有存儲 A 的 Session,會導(dǎo)致 Session 的失效
    同時session還要考慮跨域問題,不過可以使用redis緩存實現(xiàn),詳見 跨域解決了,那Session怎么辦

區(qū)別

  1. cookie數(shù)據(jù)存放在客戶的瀏覽器(客戶端)上,session數(shù)據(jù)放在服務(wù)器上,但是服務(wù)端的session的實現(xiàn)對客戶端的cookie有依賴關(guān)系的
  2. Session沒有數(shù)據(jù)大小限制,Cookie有
  3. Session數(shù)據(jù)安全,Cookie相對于不安全
  4. session會在一定時間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能??紤]到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE

聯(lián)系

session依賴于cookie
服務(wù)端執(zhí)行session機制時候會生成session的id值,這個id值會發(fā)送給客戶端,客戶端每次請求都會把這個id值放到http請求的頭部發(fā)送給服務(wù)端,而這個id值在客戶端會保存下來,保存的容器就是cookie,因此當(dāng)我們完全禁掉瀏覽器的cookie的時候,服務(wù)端的session也會不能正常使用(但是這是在你真的就完全不做任何操作的情況下)。
session不是必須依賴cookie!?。?/strong>
如果客戶端禁用了cookie怎么辦呢?
答:

  1. url重寫
這種方法讓服務(wù)器收到的每個請求中都帶有sessioinId

在每個頁面中的每個鏈接和表單中都添加名為jSessionId的參數(shù),值為當(dāng)前sessionid。
當(dāng)用戶點擊鏈接或提交表單時
服務(wù)器可以通過獲取jSessionId這個參數(shù)來得到客戶端的sessionId,找到sessoin對象

或者:

使用response.encodeURL()對每個請求的URL處理
這個方法會自動追加jsessionid參數(shù),與上面的手動添加效果是一樣的

<a href='<%=response.encodeURL("/jsp/index.jsp") %>' >主頁</a>

它更加智能:它會判斷客戶端瀏覽器是否禁用了Cookie,如果禁用了,那么這個方法在URL后面追加jsessionid,否則不會追加。

  1. 表單隱藏字段
服務(wù)器會自動修改表單,添加一個隱藏字段,以便在表單提交時能夠把session id傳遞回服務(wù)器
<form name="testform" action="/xxx"> 
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
<input type="text"> 
</form> 

Token

cookie方法不需要服務(wù)器存儲,但是憑證容易被偽造,那有什么辦法判斷憑證是否偽造呢?

和HTTPS一樣,我們可以使用簽名的方式幫助服務(wù)器校驗憑證。

Token可以避免CSRF攻擊

Token可以是無狀態(tài)的,可以在多個服務(wù)間共享

JSON Web Token(簡稱JWT)是以JSON格式存儲信息的Token,其結(jié)構(gòu)圖如下

組成

 JWT由3部分構(gòu)成:頭部,負載和簽名。

頭部存儲Token的類型簽名算法(上圖中,類型是jwt,加密算法是HS256)
負載是Token要存儲的信息(比如存儲用戶姓名和昵稱信息)
簽名是由指定的算法,將轉(zhuǎn)義后的頭部和負載,加上密鑰一同加密得到的。

最后將這三部分用.號連接,就可以得到了一個Token了。

使用JWT維護登陸態(tài),服務(wù)器不再需要維護狀態(tài)表,他僅給客戶端發(fā)送一個加密的數(shù)據(jù)token,每次請求都帶上這個加密的數(shù)據(jù),再解密驗證是否合法即可。由于是加密的數(shù)據(jù),即使用戶可以修改,命中幾率也很小。

token的儲存

一般客戶端用以下方式儲存token

  1. 存在cookie中,雖然設(shè)置HttpOnly可以有效防止XSS攻擊中token被竊取,但是也就意味著客戶端無法獲取token來設(shè)置CORS頭部。
  2. 存在sessionStorage或者localStorage中,可以設(shè)置頭部解決跨域資源共享問題,同時也可以防止CSRF,但是就需要考慮XSS的問題防止憑證泄露。

token與cookie的區(qū)別

  1. cookie 是 http 規(guī)范,token 是自定義傳遞的。
  2. cookie 沒有被瀏覽器存儲(內(nèi)存是臨時存儲,關(guān)機后信息就沒了。硬盤是長久存儲,不刪除就一直在),下一次請求時便會帶上。而 token 需要自己存儲在瀏覽器,下一次請求時再請求頭中帶上。
  3. token 默認沒有跨域限制。
  4. token可以抵抗csrf,cookie+session不行

因為form 發(fā)起的 POST 請求并不受到瀏覽器同源策略的限制,因此可以任意地使用其他域的 Cookie 向其他域發(fā)送 POST 請求,形成 CSRF 攻擊。在post請求的瞬間,cookie會被瀏覽器自動添加到請求頭中。但token不同,token是開發(fā)者為了防范[CSRF]或XSRF(Cross-site request forgery跨站請求偽造)而特別設(shè)計的令牌,瀏覽器不會自動添加到headers里,攻擊者也無法訪問用戶的token,所以提交的表單無法通過服務(wù)器過濾,也就無法形成攻擊。

所以:session是比cookie更好的一種解決方案。token成為主流,是因為他不需要額外的存儲管理

Web Storage

在 Web Storage 本地存儲 包括 sessionStorage 會話存儲 和 localStorage 本地存儲。
cookie 和 session 完全是服務(wù)器端可以操作的數(shù)據(jù),sessionStorage 和 localStorage 完全是瀏覽器端操作的數(shù)據(jù)。

localStorage與sessionStorage

sessionStorage 和 localStorage 的編程接口是一樣的。
sessionStorage 和 locatlStorage 區(qū)別在于 數(shù)據(jù)存在時間范圍 和 頁面范圍。

sessionStorage: 數(shù)據(jù)只保存到存儲它的窗口或標(biāo)簽關(guān)閉時,數(shù)據(jù)在構(gòu)建它們的窗口或標(biāo)簽內(nèi)也可見

localStorage: 數(shù)據(jù)的生命周期比窗口或瀏覽器的生命周期長,數(shù)據(jù)可被同源的每個窗口或者標(biāo)簽共享,如果一個瀏覽器同時打開兩個tab,localstorage和cookie是共享的,sessionstorage是不共享的

注意:
localstorage,sessionstorage在瀏覽器無痕模式下會存在丟失問題

localStorage、sessionStorage、cookie 區(qū)別

前端數(shù)據(jù)存儲系列(Cookie、Session、localStorage、sessionStorage、Token)

參考文章:

Cookie 和 Session 關(guān)系和區(qū)別
如果客戶端禁用了cookie,通常有兩種方法實現(xiàn)session而不依賴cookie
session依賴cookie,如果瀏覽器禁用了cookie呢文章來源地址http://www.zghlxwxcb.cn/news/detail-423860.html

到了這里,關(guān)于前端數(shù)據(jù)存儲系列(Cookie、Session、localStorage、sessionStorage、Token)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Vue】瀏覽器緩存sessionStorage、localStorage、Cookie

    【Vue】瀏覽器緩存sessionStorage、localStorage、Cookie

    目錄 一、sessionStorage 1、簡介 2、方法 3、代碼示例 a、存取單個數(shù)據(jù) b、存取對象 c、清除數(shù)據(jù) 二、localStorage 1、簡介 2、方法 3、代碼示例 三、cookie 1、簡介 2、方法 3、代碼示例 四、三者區(qū)別 1、sessionStorage與localStorage區(qū)別 2、sessionStorage、localStorage、cookie區(qū)別 五、往期相關(guān)優(yōu)

    2024年02月07日
    瀏覽(31)
  • sessionStorage和localStorage 的區(qū)別和使用,具體與 session 區(qū)分

    sessionStorage和localStorage是瀏覽器提供的Web Storage機制,用于存儲在客戶端(瀏覽器)本地的數(shù)據(jù)。它們之間的區(qū)別主要體現(xiàn)在以下幾個方面: 1. 數(shù)據(jù)作用域: - sessionStorage:存儲在sessionStorage中的數(shù)據(jù)僅在當(dāng) 前會話期間有效 ,即在瀏覽器同一個窗口或標(biāo)簽頁打開的時間范圍內(nèi)

    2024年02月09日
    瀏覽(18)
  • Vue——vuex使用、Router使用、localstorage、sessionstorage和cookie
  • 原生JavaScript實現(xiàn)本地存儲(localStorage)和會話存儲(sessionStorage)

    目錄 一、簡單介紹 二、localStorage本地存儲 三、sessionStorage會話存儲 本地存儲和會話存儲的目的,是將所輸入的文件存入到瀏覽器中,在需要的時候,直接調(diào)用,但是本地存儲和會話存儲有著一定的區(qū)別,本地存儲,在不主動刪除的情況下,會一直保留在瀏覽器中,會話存儲是

    2023年04月08日
    瀏覽(32)
  • 利用HTML5存儲對象:localStorage和sessionStorage解析

    前端朋友們,你是否曾為如何在用戶的瀏覽器中存儲數(shù)據(jù)而感到困擾?你是否想過,如果可以在用戶的瀏覽器中存儲一些數(shù)據(jù),那么我們的應(yīng)用程序?qū)兊枚嗝磸姶螅咳绻愕拇鸢甘强隙ǖ?,那么本文將為你解鎖一種新的能力——使用HTML5的localStorage和sessionStorage。 HTML5引入

    2024年02月05日
    瀏覽(17)
  • 【溫故而知新】HTML5存儲localStorage/sessionStorage

    HTML5是HTML的最新版本,它引入了許多新的元素和功能,以適應(yīng)現(xiàn)代網(wǎng)頁開發(fā)的需求。以下是HTML5的一些主要特點: 新增語義元素 :HTML5引入了許多新的語義元素,如 header、footer、article、section 等,這些元素有助于提高網(wǎng)頁的結(jié)構(gòu)化和可訪問性。 媒體支持 :HTML5引入了 audio 和

    2024年01月18日
    瀏覽(96)
  • 表白墻完善(數(shù)據(jù)庫,前端,后端Servlet),再談Cookie和Session。以及一個關(guān)于Cookie的練習(xí)小程序

    表白墻完善(數(shù)據(jù)庫,前端,后端Servlet),再談Cookie和Session。以及一個關(guān)于Cookie的練習(xí)小程序

    目錄 表白墻引入數(shù)據(jù)庫? 再談Cookie和session 得到Cookie ?編輯 設(shè)置Cooie 使用Cookie編寫一個登入的小界面 1.先引入數(shù)據(jù)庫的依賴(驅(qū)動包),5.1.49 pom.xml中,在之前的兩個之前,再去添加一個 2.創(chuàng)建本地的數(shù)據(jù)庫 3.之前的代碼中有一段可以刪掉了 這個代碼需要刪除,因為我們已

    2024年02月08日
    瀏覽(31)
  • 前端存儲使用localForage代替localStorage

    localForage是一個JavaScript庫,能夠類似localStorage的存儲。 他是異步存儲,可以優(yōu)化你的web應(yīng)用程序的離線體驗,而且能存儲多種類型的數(shù)據(jù)。 支持es6的 Promises API,而且支持添加回調(diào)函數(shù)。 安裝成功后,即可在項目中使用,這里以vue為例: 與localStorage大致相同:https://developer.

    2024年02月16日
    瀏覽(23)
  • Vue中如何進行狀態(tài)持久化(LocalStorage、SessionStorage)

    Vue中如何進行狀態(tài)持久化(LocalStorage、SessionStorage)

    在Vue應(yīng)用中,通常需要將一些狀態(tài)進行持久化,以便在用戶關(guān)閉瀏覽器或刷新頁面后,仍能保留之前的狀態(tài)。常見的持久化方式包括 LocalStorage 和 SessionStorage 。本文將介紹如何使用這兩種方式來實現(xiàn)狀態(tài)的持久化。 LocalStorage 是HTML5中引入的一種持久化方式,它可以將數(shù)據(jù)存儲

    2024年02月09日
    瀏覽(21)
  • Websocket、Session&Cookie、前端基礎(chǔ)知識

    Websocket、Session&Cookie、前端基礎(chǔ)知識

    目錄 1.Websocket Websocket與HTTP的介紹 不同使用場景 Websocket鏈接過程 2.SessionCookie Cookie的工作原理 Session的工作原理 區(qū)別 3.前端基礎(chǔ)知識 HTTP: 1. HTTP 是單向的,客戶端發(fā)送請求,服務(wù)器發(fā)送響應(yīng)。每個 HTTP 或 HTTPS 請求每次都會新建與服務(wù)器的連接,并且在獲得響應(yīng)后,連接將自

    2024年02月10日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包