HTTP協(xié)議之Cookie
- 使用Cookie的原因
- Cookie的定義
- 客戶端和服務(wù)器的Cookie
- 客戶端發(fā)送請(qǐng)求報(bào)文的Cookie
- 服務(wù)器端響應(yīng)報(bào)文的set-cookie
- Cookie的通信
使用Cookie的原因
因?yàn)镠TTP協(xié)議是無(wú)連接無(wú)狀態(tài)的協(xié)議屈梁,這雖然帶來(lái)了速度上的提升和結(jié)構(gòu)上的簡(jiǎn)潔,但是有許多應(yīng)用場(chǎng)景需要進(jìn)行有狀態(tài)的連接耸成,比如我在一個(gè)網(wǎng)站上登錄了,點(diǎn)擊一個(gè)本站鏈接,跳轉(zhuǎn)到詳情的頁(yè)面,這時(shí),用戶肯定希望保持登錄的狀態(tài)均澳,因此,我們需要引入 Cookie 來(lái)為HTTP協(xié)議添加狀態(tài)管理功能符衔。
Cookie的定義
Cookie是指在HTTP協(xié)議下找前,服務(wù)器或腳本可以維護(hù)客戶端計(jì)算機(jī)上信息的一種方式。通俗地說(shuō)判族,Cookie是一種能夠讓網(wǎng)站W(wǎng)eb服務(wù)器把少量數(shù)據(jù)儲(chǔ)存到客戶端的硬盤(pán)或內(nèi)存里躺盛,或是從客戶端的硬盤(pán)里讀取數(shù)據(jù)的一種技術(shù)。Cookie文件記錄了用戶的有關(guān)信息形帮,如身份識(shí)別號(hào)碼ID槽惫、密碼、瀏覽過(guò)的網(wǎng)頁(yè)辩撑、停留的時(shí)間界斜、用戶在Web站點(diǎn)購(gòu)物的方式或用戶訪問(wèn)該站點(diǎn)的次數(shù)等,當(dāng)用戶再次鏈接Web服務(wù)器時(shí)合冀,瀏覽器讀取Cookie信息并傳遞給Web站點(diǎn)各薇。
客戶端和服務(wù)器的Cookie
** 客戶端發(fā)送請(qǐng)求報(bào)文的Cookie**
??如果客戶端沒(méi)有Cookie時(shí),在其請(qǐng)求報(bào)文中不會(huì)有Cookie字段君躺,若已經(jīng)有Cookie峭判,再訪問(wèn)對(duì)應(yīng)網(wǎng)站時(shí),瀏覽器會(huì)檢索是否有Cookie與此網(wǎng)站對(duì)應(yīng)棕叫,若對(duì)應(yīng)林螃,則服務(wù)器可讀取次Cookie記錄的信息。??請(qǐng)求報(bào)文中的Cookie字段只有:
Cookie:status = enable(disable)
服務(wù)器端響應(yīng)報(bào)文的set-cookie
??服務(wù)器若發(fā)現(xiàn)請(qǐng)求報(bào)文中沒(méi)有Cookie字段俺泣,則會(huì)在response報(bào)文中加入 Set-Cookie 字段疗认,格式為:
Set-Cookie: NAME = VALUE; expires = DATE; path = PATH; domain = www.xxx.com; Secure; HttpOnly
上面的全大寫(xiě)變量為自定義變量,我們需要定義Cookie的名稱伏钠,并對(duì)其賦值侮邀,若是多鍵值對(duì)的情況,格式為NAME = KEY1 = VALUE1 & KEY2 = VALUE2贝润;expires為Cookie失效的時(shí)間绊茧,默認(rèn)為關(guān)閉瀏覽器后清理;path為服務(wù)器定義的Cookie存儲(chǔ)路徑打掘;domain為網(wǎng)站的域华畏,若www.baidu.com,他的域應(yīng)該為baidu.com/*尊蚁,即主頁(yè)及其次級(jí)目錄亡笑;Secure若出現(xiàn),意味著僅在https通信時(shí)發(fā) 送Cookie横朋;HttpOnly若出現(xiàn)仑乌,意味著只能在HTTP協(xié)議中訪問(wèn)Cookie,不能在Javascript中訪問(wèn)Cookie。
Cookie的通信
??如圖所示晰甚,這是一個(gè)標(biāo)準(zhǔn)的Cookie通信過(guò)程衙传。沒(méi)有Cookie的客戶端對(duì)服務(wù)器發(fā)起請(qǐng)求,服務(wù)器發(fā)現(xiàn)請(qǐng)求報(bào)文首部中沒(méi)有Cookie字段厕九,就在response報(bào)文中加入Set-Cookie字段蓖捶,客戶端接收到之后,在本地生成Cookie扁远,并在再次發(fā)生http訪問(wèn)時(shí)俊鱼,在request報(bào)文中加入Cookie字段,于是服務(wù)器就會(huì)知道用戶的一些信息畅买,用來(lái)進(jìn)行個(gè)性化和定制化的操作并闲。