什么是cookie?
cookie是瀏覽器訪問(wèn)服務(wù)器后,服務(wù)器傳給瀏覽器的一段數(shù)據(jù),一般是與用戶信息相關(guān)的數(shù)據(jù)
瀏覽器收到cookie之后,會(huì)存儲(chǔ)在本地硬盤中,但是可能會(huì)經(jīng)過(guò)一段時(shí)間后刪除。
之后瀏覽器再次訪問(wèn)這個(gè)服務(wù)器(同個(gè)域名下),都會(huì)攜帶這個(gè)cookie里面的數(shù)據(jù)。
cookie可以被用戶手動(dòng)更改,也可以用JS更改,所以后端不能相信瀏覽器傳過(guò)來(lái)的cookie,必須予以驗(yàn)證
cookie的作用
cookie一般用于服務(wù)器識(shí)別用戶身份以及記錄用戶的歷史操作。
識(shí)別用戶身份:
當(dāng)用戶在某個(gè)網(wǎng)站注冊(cè)成功并首次登錄后,該網(wǎng)站服務(wù)器會(huì)根據(jù)用戶注冊(cè)信息發(fā)給用戶瀏覽器一段數(shù)據(jù),這就是cookie,里面包含了該用戶特有的信息,比如注冊(cè)時(shí)的用戶名以及注冊(cè)ID等(各個(gè)網(wǎng)站有所不同,但一般利用這段數(shù)據(jù)能夠在后臺(tái)服務(wù)器數(shù)據(jù)庫(kù)中唯一確定一個(gè)用戶),之后用戶再次登錄或訪問(wèn)該網(wǎng)站中的其他頁(yè)面時(shí),都會(huì)攜帶這段cookie數(shù)據(jù),這樣就免去了用戶頻繁登錄操作,服務(wù)器還能根據(jù)用戶的身份對(duì)其展示不同的網(wǎng)頁(yè)內(nèi)容,提升用戶體驗(yàn)。
記錄歷史操作
當(dāng)我們?cè)谠L問(wèn)購(gòu)物網(wǎng)站時(shí),這些網(wǎng)站一般都會(huì)有購(gòu)物車功能,這是如何實(shí)現(xiàn)的呢?它還是用到了cookie,當(dāng)我們將一個(gè)商品放入購(gòu)物車后,網(wǎng)站就會(huì)利用js改寫我們?yōu)g覽器本地的cookie,比如添加購(gòu)物車?yán)锏纳唐窋?shù)據(jù),這樣,當(dāng)我們關(guān)閉網(wǎng)頁(yè)或者隔幾天再來(lái)訪問(wèn)時(shí),就會(huì)發(fā)現(xiàn)我們的購(gòu)物車中依然保留了之前挑選的商品。這就是cookie記錄用戶歷史操作的一個(gè)很好的例子。
發(fā)生在登錄注冊(cè)背后的故事
用戶在訪問(wèn)一個(gè)新的網(wǎng)站時(shí),該網(wǎng)站可能要求用戶先注冊(cè),在注冊(cè)頁(yè)面,用戶鍵入注冊(cè)必需的信息,比如用戶名,密碼,郵箱等,當(dāng)點(diǎn)擊確定或提交之后,網(wǎng)頁(yè)就會(huì)攜帶用戶注冊(cè)的信息向服務(wù)器發(fā)起一個(gè)POST請(qǐng)求,服務(wù)器拿到POST請(qǐng)求里的數(shù)據(jù)之后,首先會(huì)校驗(yàn)數(shù)據(jù)的格式是否正確,比如郵箱的格式,密碼的格式等等,如果校驗(yàn)通過(guò),則會(huì)比對(duì)數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)中不存在相同的注冊(cè)數(shù)據(jù)時(shí),會(huì)給用戶返回注冊(cè)成功的信息。很多網(wǎng)站在用戶注冊(cè)成功之后就自動(dòng)跳轉(zhuǎn)到首頁(yè),而有的會(huì)要求用戶用注冊(cè)好的身份重新登錄,所以在用戶注冊(cè)成功或者首次登錄之后,服務(wù)器會(huì)根據(jù)用戶的注冊(cè)信息傳給用戶瀏覽器一段cookie數(shù)據(jù),里面包含可用戶身份等一些信息,之后用戶再次登錄或者訪問(wèn)該網(wǎng)站其他頁(yè)面時(shí),都會(huì)在請(qǐng)求頭里面攜帶這段cookie數(shù)據(jù),免去了用戶頻繁登錄的操作。文字介紹就到這里了,接下來(lái)給張圖示意一下:
