cookie是什么呢纤房?
不不不扳抽,我說(shuō)的cookie是這個(gè)
下面就詳細(xì)介紹下這個(gè)web世界中不可缺少的一個(gè)元素
1. cookie的產(chǎn)生
cookie是什么呢咱娶?wikipedia上面的定義這么寫(xiě):
Cookie(復(fù)數(shù)形態(tài)Cookies)躯肌,中文名稱為“小型文本文件”或“小甜餅”[1]缭贡,指某些網(wǎng)站為了辨別用戶身份而儲(chǔ)存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)炉擅。定義于RFC2109辉懒。是網(wǎng)景公司的前雇員盧·蒙特利在1993年3月的發(fā)明[2]阳惹。
從這段話可以知道cookie 的一個(gè)最大的特征就是存儲(chǔ)在 客戶端
而它的主要作用是 身份識(shí)別
對(duì)HTTP協(xié)議有一定了解的朋友們應(yīng)該知道,HTTP協(xié)議是一種 無(wú)狀態(tài) 協(xié)議眶俩,何謂無(wú)狀態(tài)莹汤?就是這一次請(qǐng)求,和上一次颠印,下一次請(qǐng)求之間相互完全獨(dú)立纲岭。
現(xiàn)在的很多網(wǎng)站都需要有登錄功能抹竹,如果單純用HTTP來(lái)識(shí)別,由于其無(wú)狀態(tài)的性質(zhì)止潮,不能說(shuō)這一個(gè)請(qǐng)求進(jìn)行過(guò)身份認(rèn)證了窃判,下一條就不進(jìn)行了。因此喇闸,每一次請(qǐng)求都要進(jìn)行一次身份認(rèn)證袄琳,而每加載一個(gè)頁(yè)面,就會(huì)有十幾甚至幾十條的http請(qǐng)求燃乍,反復(fù)的進(jìn)行身份驗(yàn)證對(duì)于資源的消耗十分的大唆樊,因此產(chǎn)生了cookie來(lái)解決這個(gè)問(wèn)題
2.cookie的作用方法
- 第一步 完成(如用戶名密碼方式的)身份驗(yàn)證,服務(wù)端在給客戶端的response中加入設(shè)置cookie的信息
- 第二步 客戶端瀏覽器把cookie儲(chǔ)存在本地
- 第三步 客戶端在每次發(fā)送請(qǐng)求的時(shí)候刻蟹,將cookie加在請(qǐng)求的header中
- 第四步 (有需要時(shí))重復(fù)第三步逗旁,知道瀏覽器將cookie清除或者cookie自動(dòng)過(guò)期
3.cookie的設(shè)置與傳輸
設(shè)置
cookie的設(shè)置,是通過(guò)response中的一個(gè)名為set-cookie的header實(shí)現(xiàn)的舆瘪,傳輸?shù)姆绞绞莔ap (key-value pair鍵值對(duì)片效,也稱作關(guān)聯(lián)數(shù)組,哈希表)
cookie的傳遞介陶,是每次瀏覽器發(fā)到服務(wù)端的request的header中堤舒,也是以鍵值方式傳遞
4.用cookie實(shí)現(xiàn)持續(xù)的身份驗(yàn)證
cookie的一大作用就是用來(lái)實(shí)現(xiàn)持續(xù)的身份驗(yàn)證,登錄一次哺呜,保持一段時(shí)間的在線狀態(tài)舌缤。
實(shí)現(xiàn)的方法是服務(wù)器端使用session用戶對(duì)應(yīng)的session變量存儲(chǔ)在服務(wù)端,將一個(gè)與某残,而將session的id国撵,也是對(duì)應(yīng)唯一的身份識(shí)別碼,存儲(chǔ)在cookie中玻墅,每一個(gè)sessionid對(duì)應(yīng)唯一的登錄用戶介牙。