服務(wù)器端的無(wú)狀態(tài)性是什么?
客戶端的每次請(qǐng)求都是獨(dú)立的,服務(wù)端不會(huì)主動(dòng)保留每次HTTP的請(qǐng)求狀態(tài)。
類似于超市的收銀員不會(huì)根據(jù)五官而記住每個(gè)結(jié)賬的顧客。
如何突破HTTP無(wú)狀態(tài)性的限制?
在現(xiàn)實(shí)生活中,結(jié)賬的時(shí)候出示會(huì)員卡,在web開(kāi)發(fā)中會(huì)員卡就是指cookie,發(fā)送cookie就可以HTTP無(wú)狀態(tài)性的限制。
什么是cookie?
域名獨(dú)立:不同的域名有不同的cookie,不同域名下的cookie不能相互訪問(wèn);
自動(dòng)發(fā)送:每當(dāng)客戶端發(fā)起請(qǐng)求時(shí),會(huì)自動(dòng)把當(dāng)前域名下未過(guò)期的cookie發(fā)送到服務(wù)器;
過(guò)期時(shí)限:每個(gè)cookie都有時(shí)限,過(guò)期了就不發(fā)送了;
cookie在身份認(rèn)證中的流程
客戶端第一次請(qǐng)求登陸——服務(wù)器通過(guò)響應(yīng)頭發(fā)送身份認(rèn)證的cookie——客戶端再次請(qǐng)求登陸——瀏覽器自動(dòng)把cookie通過(guò)請(qǐng)求頭發(fā)送給服務(wù)器——服務(wù)器即可驗(yàn)明用戶身份
cookie不具備安全性,瀏覽器也提供了讀取cookie的api接口,所以千萬(wàn)不能用cookie存儲(chǔ)重要信息,用戶名密碼等;
提高身份認(rèn)證的安全性
發(fā)送cookie后,服務(wù)器端會(huì)自動(dòng)核實(shí)信息,就像去超市出示會(huì)員卡,收銀員要刷卡認(rèn)證一樣,這個(gè)“會(huì)員卡+刷卡認(rèn)證”就是session認(rèn)證機(jī)制的精髓;
總結(jié):session認(rèn)證機(jī)制就是服務(wù)器通過(guò)客戶端的cookie來(lái)認(rèn)證客戶端身份。
session工作原理:
1、客戶端提交登陸請(qǐng)求,把賬號(hào)密碼提交到服務(wù)器驗(yàn)證;
2、服務(wù)器驗(yàn)證通過(guò),在服務(wù)器開(kāi)辟內(nèi)存記錄人的信息,生成cookie字符串,通過(guò)響應(yīng)的形式發(fā)送給客戶端;
3、客戶端收到cookie,保存起來(lái);
4、客戶端再次發(fā)起請(qǐng)求,通過(guò)請(qǐng)求頭把所有可用的cookie發(fā)送給服務(wù)器端;
5、服務(wù)器端收到cookie后從內(nèi)存中查找對(duì)應(yīng)信息,找到則證明用戶驗(yàn)證成功,針對(duì)用戶生成特定頁(yè)面響應(yīng)給客戶端;
6、注意:敏感重要的信息是存在服務(wù)器的內(nèi)存中,不會(huì)出現(xiàn)在cookie中;