cookie是什么呢?
不不不,我說的cookie是這個
下面就詳細介紹下這個web世界中不可缺少的一個元素
1. cookie的產(chǎn)生
cookie是什么呢?wikipedia上面的定義這么寫:
Cookie(復數(shù)形態(tài)Cookies),中文名稱為“小型文本文件”或“小甜餅”[1],指某些網(wǎng)站為了辨別用戶身份而儲存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過加密)。定義于RFC2109。是網(wǎng)景公司的前雇員盧·蒙特利在1993年3月的發(fā)明[2]。
從這段話可以知道cookie 的一個最大的特征就是存儲在 客戶端
而它的主要作用是 身份識別
對HTTP協(xié)議有一定了解的朋友們應該知道,HTTP協(xié)議是一種 無狀態(tài) 協(xié)議,何謂無狀態(tài)?就是這一次請求,和上一次,下一次請求之間相互完全獨立。
現(xiàn)在的很多網(wǎng)站都需要有登錄功能,如果單純用HTTP來識別,由于其無狀態(tài)的性質(zhì),不能說這一個請求進行過身份認證了,下一條就不進行了。因此,每一次請求都要進行一次身份認證,而每加載一個頁面,就會有十幾甚至幾十條的http請求,反復的進行身份驗證對于資源的消耗十分的大,因此產(chǎn)生了cookie來解決這個問題
2.cookie的作用方法
- 第一步 完成(如用戶名密碼方式的)身份驗證,服務端在給客戶端的response中加入設置cookie的信息
- 第二步 客戶端瀏覽器把cookie儲存在本地
- 第三步 客戶端在每次發(fā)送請求的時候,將cookie加在請求的header中
- 第四步 (有需要時)重復第三步,知道瀏覽器將cookie清除或者cookie自動過期
3.cookie的設置與傳輸
設置
cookie的設置,是通過response中的一個名為set-cookie的header實現(xiàn)的,傳輸?shù)姆绞绞莔ap (key-value pair鍵值對,也稱作關聯(lián)數(shù)組,哈希表)
cookie的傳遞,是每次瀏覽器發(fā)到服務端的request的header中,也是以鍵值方式傳遞
4.用cookie實現(xiàn)持續(xù)的身份驗證
cookie的一大作用就是用來實現(xiàn)持續(xù)的身份驗證,登錄一次,保持一段時間的在線狀態(tài)。
實現(xiàn)的方法是服務器端使用session用戶對應的session變量存儲在服務端,將一個與,而將session的id,也是對應唯一的身份識別碼,存儲在cookie中,每一個sessionid對應唯一的登錄用戶。