PM勇闖技術(shù) – Cookie、Session和Token

0 評(píng)論 318 瀏覽 0 收藏 6 分鐘

Cookie、Session、Token到底有什么區(qū)別?產(chǎn)品經(jīng)理也該懂!這篇文章用最簡(jiǎn)單的方式講清楚三者的原理和應(yīng)用場(chǎng)景,讀完你就能和技術(shù)同事聊得上認(rèn)證機(jī)制了。

Cookie

定義

存儲(chǔ)在用戶(hù)瀏覽器中的小數(shù)據(jù)文件(通常單條Cookie<=4KB),包含鍵值對(duì),常用于記錄用戶(hù)偏好、登錄憑證、購(gòu)物車(chē)商品、用戶(hù)在網(wǎng)站上的語(yǔ)言選擇等少量數(shù)據(jù)。

工作原理

服務(wù)器通過(guò)響應(yīng)頭中的Set-Cookie字段向?yàn)g覽器發(fā)送Cookie,瀏覽器會(huì)在后續(xù)請(qǐng)求中將相應(yīng)Cookie包含在請(qǐng)求頭中發(fā)送給服務(wù)器,服務(wù)器可讀取其中信息來(lái)識(shí)別用戶(hù)或提供個(gè)性化服務(wù)。

咱們可以通過(guò)瀏覽器控制臺(tái)查看到Cookie信息:

前端調(diào)用后端接口時(shí)也會(huì)帶上cookie信息:

Session

定義

服務(wù)器端用于跟蹤用戶(hù)會(huì)話(huà)的機(jī)制,服務(wù)器為每個(gè)用戶(hù)會(huì)話(huà)創(chuàng)建一個(gè)唯一的Session對(duì)象,在其中存儲(chǔ)用戶(hù)相關(guān)的數(shù)據(jù),如用戶(hù)登錄狀態(tài)、購(gòu)物車(chē)信息。

工作原理

用戶(hù)首次訪(fǎng)問(wèn)服務(wù)器時(shí),服務(wù)器創(chuàng)建Session并分配唯一的SessionID,通常通過(guò)Cookie將SessionID發(fā)送到客戶(hù)端??蛻?hù)端后續(xù)請(qǐng)求都攜帶此ID,服務(wù)器據(jù)此識(shí)別用戶(hù)并獲取其Session數(shù)據(jù)

Token

定義

一種由服務(wù)器生成并頒發(fā)給客戶(hù)端的字符串,用于驗(yàn)證用戶(hù)身份和授權(quán)訪(fǎng)問(wèn),常用于實(shí)現(xiàn)單點(diǎn)登錄、第三方登錄等功能。

工作原理

服務(wù)器驗(yàn)證用戶(hù)信息后生成Token并返回給客戶(hù)端??蛻?hù)端后續(xù)請(qǐng)求將Token發(fā)送給服務(wù)器,服務(wù)器驗(yàn)證Token的有效性來(lái)確定用戶(hù)身份和權(quán)限,決定是否允許訪(fǎng)問(wèn)資源。

類(lèi)比一下

公司門(mén)衛(wèi)其實(shí)無(wú)法記住所有同事的名字,但是又要確認(rèn)身份才能放你進(jìn)公司,咋辦呢??jī)蓚€(gè)辦法:1?? 員工自己刷工卡(攜帶Cookie);2?? 外來(lái)人員主動(dòng)向門(mén)衛(wèi)自報(bào)家門(mén)和來(lái)訪(fǎng)目的,然后保安大哥給你張臨時(shí)出入證(出入證相當(dāng)于Cookie,出入證中的信息相當(dāng)于SessionID);

那Token呢,能怎么類(lèi)比?授權(quán)書(shū)有見(jiàn)過(guò)或者用過(guò)吧,這就是現(xiàn)實(shí)中由公司給你頒發(fā)有指定權(quán)限范圍、有效期的Token,授權(quán)書(shū)上的公章和法定代表人簽名可以理解為T(mén)oken簽名;辦事時(shí)只要帶上這個(gè)授權(quán)書(shū),辦事人員就認(rèn)可你的身份啦~

總結(jié)

Cookie、Session和Token的主要區(qū)別在于:Session主要在服務(wù)器端存儲(chǔ)數(shù)據(jù),Cookie在客戶(hù)端存儲(chǔ)數(shù)據(jù),Token主要用于身份驗(yàn)證和授權(quán),通常不存儲(chǔ)大量用戶(hù)數(shù)據(jù)。

我們?cè)谔詫毾聠螘r(shí),淘寶需要判斷我們是否登錄并有權(quán)限購(gòu)物,這是通過(guò)Session實(shí)現(xiàn)的;而淘寶首頁(yè)為我們推薦的商品,是通過(guò)獲取我們的Cookie中的瀏覽記錄得出的。我們使用QQ登錄其他網(wǎng)站時(shí),網(wǎng)站是通過(guò)獲取QQ返回的Token來(lái)驗(yàn)證我們的身份并登錄的。

HTTP協(xié)議是一種無(wú)狀態(tài)協(xié)議,即每次服務(wù)端接收到客戶(hù)端的請(qǐng)求時(shí)都是一個(gè)全新的請(qǐng)求(是的,看起來(lái)就跟失憶了一樣,但是這確實(shí)可以降低服務(wù)器的記憶負(fù)擔(dān),提升處理效率),服務(wù)器并不知道客戶(hù)端的歷史請(qǐng)求記錄,Session和Cookie的主要目的其實(shí)就是為了彌補(bǔ)HTTP的無(wú)狀態(tài)特性。

本文由 @肖沐 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!