Cookie
cookie 是一個(gè)非常具體的東西,指的就是瀏覽器里面能永久存儲(chǔ)的一種數(shù)據(jù)纫塌,僅僅是瀏覽器實(shí)現(xiàn)的一種數(shù)據(jù)存儲(chǔ)功能诊县。
cookie由服務(wù)器生成,發(fā)送給瀏覽器措左,瀏覽器把cookie以kv形式保存到某個(gè)目錄下的文本文件內(nèi)依痊,下一次請(qǐng)求同一網(wǎng)站時(shí)會(huì)把該cookie發(fā)送給服務(wù)器。由于cookie是存在客戶(hù)端上的怎披,所以瀏覽器加入了一些限制確保cookie不會(huì)被惡意使用抗悍,同時(shí)不會(huì)占據(jù)太多磁盤(pán)空間,所以每個(gè)域的cookie數(shù)量是有限的钳枕。
Session
session 從字面上講缴渊,就是會(huì)話(huà)。這個(gè)就類(lèi)似于你和一個(gè)人交談鱼炒,你怎么知道當(dāng)前和你交談的是張三而不是李四呢衔沼?對(duì)方肯定有某種特征(長(zhǎng)相等)表明他就是張三。
session 也是類(lèi)似的道理昔瞧,服務(wù)器要知道當(dāng)前發(fā)請(qǐng)求給自己的是誰(shuí)指蚁。為了做這種區(qū)分,服務(wù)器就要給每個(gè)客戶(hù)端分配不同的“身份標(biāo)識(shí)”自晰,然后客戶(hù)端每次向服務(wù)器發(fā)請(qǐng)求的時(shí)候凝化,都帶上這個(gè)“身份標(biāo)識(shí)”,服務(wù)器就知道這個(gè)請(qǐng)求來(lái)自于誰(shuí)了酬荞。至于客戶(hù)端怎么保存這個(gè)“身份標(biāo)識(shí)”搓劫,可以有很多種方式,對(duì)于瀏覽器客戶(hù)端混巧,大家都默認(rèn)采用 cookie 的方式枪向。
服務(wù)器使用session把用戶(hù)的信息臨時(shí)保存在了服務(wù)器上,用戶(hù)離開(kāi)網(wǎng)站后session會(huì)被銷(xiāo)毀咧党。這種用戶(hù)信息存儲(chǔ)方式相對(duì)cookie來(lái)說(shuō)更安全秘蛔,可是session有一個(gè)缺陷:如果web服務(wù)器做了負(fù)載均衡,那么下一個(gè)操作請(qǐng)求到了另一臺(tái)服務(wù)器的時(shí)候session會(huì)丟失。
Token
在Web領(lǐng)域基于Token的身份驗(yàn)證隨處可見(jiàn)深员。在大多數(shù)使用Web API的互聯(lián)網(wǎng)公司中负蠕,tokens 是多用戶(hù)下處理認(rèn)證的最佳方式。Token是服務(wù)端生成的一串字符串倦畅,以作客戶(hù)端進(jìn)行請(qǐng)求的一個(gè)令牌遮糖,當(dāng)?shù)谝淮蔚卿浐螅?wù)器生成一個(gè)Token便將此Token返回給客戶(hù)端滔迈,以后客戶(hù)端只需帶上這個(gè)Token前來(lái)請(qǐng)求數(shù)據(jù)即可止吁,無(wú)需再次帶上用戶(hù)名和密碼。
以下幾點(diǎn)特性會(huì)讓你在程序中使用基于Token的身份驗(yàn)證
1.無(wú)狀態(tài)燎悍、可擴(kuò)展
?2.支持移動(dòng)設(shè)備
?3.跨程序調(diào)用
?4.安全