国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 如果客戶端禁止cookie能實(shí)現(xiàn)session還能用嗎?

如果客戶端禁止cookie能實(shí)現(xiàn)session還能用嗎?

來(lái)源:千鋒教育
發(fā)布人:qyf
時(shí)間: 2022-08-03 11:48:00 1659498480

  如果客戶端禁止 cookie 能實(shí)現(xiàn) session 還能用嗎?

  一般默認(rèn)情況下,在會(huì)話中,服務(wù)器存儲(chǔ) session 的 sessionid 是通過(guò) cookie 存在瀏覽器里的。

  如果瀏覽器禁用了 cookie,瀏覽器請(qǐng)求服務(wù)器無(wú)法攜帶 sessionid,服務(wù)器無(wú)法識(shí)別請(qǐng)求中的用戶身份,session失效。

  但可以通過(guò)其他方法在禁用 cookie 的情況下,可以繼續(xù)使用session。

  通過(guò)url重寫,把 sessionid 作為參數(shù)追加的原 url 中,后續(xù)的瀏覽器與服務(wù)器交互中攜帶 sessionid 參數(shù)。

  服務(wù)器的返回?cái)?shù)據(jù)中包含 sessionid,瀏覽器發(fā)送請(qǐng)求時(shí),攜帶 sessionid 參數(shù)。

  通過(guò) Http 協(xié)議其他 header 字段,服務(wù)器每次返回時(shí)設(shè)置該 header 字段信息,瀏覽器中 js 讀取該 header 字段,請(qǐng)求服務(wù)器時(shí),js設(shè)置攜帶該 header 字段。

  cookie、session、token 三者之間的關(guān)系

  1. session機(jī)制

1

  session是服務(wù)端存儲(chǔ)的一個(gè)對(duì)象,主要用來(lái)存儲(chǔ)所有訪問(wèn)過(guò)該服務(wù)端的客戶端的用戶信息(也可以存儲(chǔ)其他信息),從而實(shí)現(xiàn)保持用戶會(huì)話狀態(tài)。但是服務(wù)器重啟時(shí),內(nèi)存會(huì)被銷毀,存儲(chǔ)的用戶信息也就消失了。

  不同的用戶訪問(wèn)服務(wù)端的時(shí)候會(huì)在session對(duì)象中存儲(chǔ)鍵值對(duì),“鍵”用來(lái)存儲(chǔ)開(kāi)啟這個(gè)用戶信息的“鑰匙”,在登錄成功后,“鑰匙”通過(guò)cookie返回給客戶端,客戶端存儲(chǔ)為sessionId記錄在cookie中。當(dāng)客戶端再次訪問(wèn)時(shí),會(huì)默認(rèn)攜帶cookie中的sessionId來(lái)實(shí)現(xiàn)會(huì)話機(jī)制。

  1.1 session是基于cookie的

  cookie的數(shù)據(jù)4k左右;

  cookie存儲(chǔ)數(shù)據(jù)的格式:字符串key=value

  cookie存儲(chǔ)有效期:可以自行通過(guò)expires進(jìn)行具體的日期設(shè)置,如果沒(méi)設(shè)置,默認(rèn)是關(guān)閉瀏覽器時(shí)失效。

  cookie有效范圍:當(dāng)前域名下有效。所以session這種會(huì)話存儲(chǔ)方式方式只適用于客戶端代碼和服務(wù)端代碼運(yùn)行在同一臺(tái)服務(wù)器上(前后端項(xiàng)目協(xié)議、域名、端口號(hào)都一致,即在一個(gè)項(xiàng)目下)

  1.2 session的持久化

  用于解決重啟服務(wù)器后session消失的問(wèn)題。在數(shù)據(jù)庫(kù)中存儲(chǔ)session,而不是存儲(chǔ)在內(nèi)存中。通過(guò)包:express-mysql-session。

  當(dāng)客戶端存儲(chǔ)的cookie失效后,服務(wù)端的session不會(huì)立即銷毀,會(huì)有一個(gè)延時(shí),服務(wù)端會(huì)定期清理無(wú)效session,不會(huì)造成無(wú)效數(shù)據(jù)占用存儲(chǔ)空間的問(wèn)題。

  2. token機(jī)制

2

  該機(jī)制適用于前后端分離的項(xiàng)目(前后端代碼運(yùn)行在不同的服務(wù)器下)。

  請(qǐng)求登錄時(shí),token和sessionid原理相同,是對(duì)key和key對(duì)應(yīng)的用戶信息進(jìn)行加密后的加密字符,登錄成功后,會(huì)在響應(yīng)主體中將{token:“字符串”}返回給客戶端。

  客戶端通過(guò)cookie都可以進(jìn)行存儲(chǔ)。再次請(qǐng)求時(shí)不會(huì)默認(rèn)攜帶,需要在請(qǐng)求攔截器位置給請(qǐng)求頭中添加認(rèn)證字段Authorization攜帶token信息,服務(wù)器就可以通過(guò)token信息查找用戶登錄狀態(tài)。

  session的工作原理?

  當(dāng)客戶端登錄完成后,會(huì)在服務(wù)端產(chǎn)生一個(gè)session,此時(shí)服務(wù)端會(huì)將sessionid返回給客戶端瀏覽器。客戶端將sessionid儲(chǔ)存在瀏覽器的cookie中,當(dāng)用戶再次登錄時(shí),會(huì)獲得對(duì)應(yīng)的sessionid,然后將sessionid發(fā)送到服務(wù)端請(qǐng)求登錄,服務(wù)端在內(nèi)存中找到對(duì)應(yīng)的sessionid,完成登錄,如果找不到,返回登錄頁(yè)面。

  更多關(guān)于“Java培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢(mèng)想。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨(dú)特的優(yōu)勢(shì)和特點(diǎn)。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問(wèn)題是什么?

ORM(對(duì)象關(guān)系映射)解決的主要問(wèn)題是將關(guān)系數(shù)據(jù)庫(kù)與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)以表格的形式存儲(chǔ),而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運(yùn)算符?

Go為什么不支持三元運(yùn)算符Go語(yǔ)言是一種以簡(jiǎn)潔和有效性為目標(biāo)的編程語(yǔ)言,因此在設(shè)計(jì)過(guò)程中,Go的設(shè)計(jì)者刻意排除了一些他們認(rèn)為可能導(dǎo)致復(fù)雜性或...詳情>>

2023-10-14 12:12:36
IT通常說(shuō)的平臺(tái)是什么意思?

在信息技術(shù)(IT)領(lǐng)域,”平臺(tái)”這個(gè)詞有著廣泛的含義,它常常指代支持軟件應(yīng)用開(kāi)發(fā)和運(yùn)行的基礎(chǔ)框架和環(huán)境。以下是對(duì)”平臺(tái)”這個(gè)概念的更深入...詳情>>

2023-10-14 11:55:36
什么是PowerPivot?

什么是PowerPivotPowerPivot,全稱”PowerPivot for Excel”,是Microsoft提供的一種數(shù)據(jù)分析工具,可以作為Excel的插件使用。通過(guò)PowerPivot,...詳情>>

2023-10-14 11:25:48