目錄

前言
Cookie
Session
有了 Cookie 為什么還要 Session?
Cookie和Session的區(qū)別
Token
HTTP 是一種無(wú)狀態(tài)協(xié)議。因?yàn)镠TTP底層是TCP,是一個(gè)長(zhǎng)連接,這個(gè)過(guò)程中是保持連接狀態(tài)的。在這個(gè)連接過(guò)程中,客戶(hù)端可以向服務(wù)器發(fā)送多次請(qǐng)求,各個(gè)請(qǐng)求之間沒(méi)有什么聯(lián)系。每次服務(wù)器接收到客戶(hù)端的請(qǐng)求時(shí),都是一個(gè)全新的請(qǐng)求,服務(wù)器并不知道客戶(hù)端的歷史請(qǐng)求記錄。
Cookie客戶(hù)端請(qǐng)求服務(wù)器時(shí),如果服務(wù)器需要記錄該用戶(hù)狀態(tài),就使用response向客戶(hù)端瀏覽器頒發(fā)一個(gè)Cookie并在響應(yīng)中帶有Set-Cookie報(bào)頭。而客戶(hù)端瀏覽器會(huì)把Cookie保存起來(lái)。當(dāng)瀏覽器再請(qǐng)求服務(wù)器時(shí),瀏覽器把請(qǐng)求的網(wǎng)址連同該Cookie一同提交給服務(wù)器。服務(wù)器通過(guò)檢查該Cookie來(lái)獲取用戶(hù)狀態(tài)。

Session使用 cookie 時(shí)存在的問(wèn)題:
- 不安全,不要存儲(chǔ)敏感數(shù)據(jù),比如用戶(hù)密碼,賬戶(hù)余額,因?yàn)榇鎯?chǔ)在客戶(hù)端,容易被客戶(hù)端篡改,使用前需要驗(yàn)證合法性;
- 能存儲(chǔ)的數(shù)據(jù)量不能超過(guò) 4kb;
- 有數(shù)量限制,一個(gè)瀏覽器針對(duì)一個(gè)網(wǎng)站最多存 20 個(gè)Cookie,瀏覽器一般只允許存放 300 個(gè)Cookie;
- 移動(dòng)端對(duì) cookie 的支持不是很好,而 session 需要基于 cookie 實(shí)現(xiàn),所以移動(dòng)端常用的是 token;
- cookie為不可跨域的:每個(gè) cookie 都會(huì)綁定單一的域名,無(wú)法在別的域名下獲取使用;
session 是另一種記錄服務(wù)器和客戶(hù)端會(huì)話(huà)狀態(tài)的機(jī)制。session 是基于 cookie 實(shí)現(xiàn)的,session 存儲(chǔ)在服務(wù)器端,可以理解為一個(gè)狀態(tài)列表,他擁有一個(gè)唯一識(shí)別符號(hào)sessionId,通常存放于cookie中。
session認(rèn)證流程:
- 首先,瀏覽器客戶(hù)端會(huì)發(fā)送一個(gè)http請(qǐng)求到服務(wù)器端;
- 服務(wù)端接收請(qǐng)求后,創(chuàng)建對(duì)應(yīng)的 session,并發(fā)送一個(gè)http響應(yīng)到客戶(hù)端,這個(gè)響應(yīng)頭中就包含 Set-Cookie 頭部。該頭部包含了sessionId;
- 瀏覽器接收到服務(wù)端返回的 sessionId 后,將信息存入 cookie,同時(shí)cookie記錄此 SessionID 屬于哪個(gè)域名;
- 當(dāng)用戶(hù)第二次發(fā)起請(qǐng)求時(shí),請(qǐng)求會(huì)自動(dòng)判斷此域名下是否存在 Cookie 信息,如果存在瀏覽器會(huì)自動(dòng)在請(qǐng)求頭中添加 cookie 發(fā)送到服務(wù)端;
- 服務(wù)端接收請(qǐng)求,會(huì)從 Cookie 中獲取 sessionId,再根據(jù) sessionId 查找對(duì)應(yīng)的 Session 信息,如果沒(méi)有找到說(shuō)明用戶(hù)沒(méi)有登錄或者登錄失效,如果找到 Session 證明用戶(hù)已經(jīng)登錄可執(zhí)行后面操作;

有了 Cookie 為什么還要 Session?使用 session 存在的問(wèn)題:
- session 存儲(chǔ)在服務(wù)器里面,這些 session 會(huì)占據(jù)較多的內(nèi)存,需要在服務(wù)端定期的去清理過(guò)期的 session
- 移動(dòng)端對(duì) cookie 的支持不是很好,而 session 需要基于 cookie 實(shí)現(xiàn),所以移動(dòng)端常用的是 token
- 擴(kuò)展性不好:例如互聯(lián)網(wǎng)公司為了可以支撐更大的流量,后端往往需要多臺(tái)服務(wù)器共同來(lái)支撐前端用戶(hù)請(qǐng)求,那如果用戶(hù)在 A 服務(wù)器登錄了,第二次請(qǐng)求跑到服務(wù) B 就會(huì)出現(xiàn)登錄失效問(wèn)題。
token的意思是“令牌”,是服務(wù)端生成的一串字符串,作為客戶(hù)端進(jìn)行請(qǐng)求的一個(gè)令牌,當(dāng)用戶(hù)第一次登錄后,服務(wù)器生成一個(gè)token便將此token返回給客戶(hù)端,以后客戶(hù)端只需帶上這個(gè)token前來(lái)請(qǐng)求數(shù)據(jù)即可,無(wú)需再次帶上用戶(hù)名和密碼,減輕服務(wù)器的壓力。
參考:
五分鐘搞懂 Session、Cookie和Token - 掘金
聊一聊session和cookie - 掘金
Cookie和Session詳解 - 掘金
看完這篇 Session、Cookie、Token,和面試官扯皮就沒(méi)問(wèn)題了 - 掘金
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁(yè)名稱(chēng):Cookie、Session和Token-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://chinadenli.net/article12/hpigc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)、定制開(kāi)發(fā)、外貿(mào)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容