Cookie

Cookie機(jī)制

Cookie原意是小甜餅,是服務(wù)器保存在瀏覽器的一小段文本信息,屬于其中一種互聯(lián)網(wǎng)存儲(chǔ)機(jī)制。

2.1 Cookie特點(diǎn)

每個(gè)Cookie大小一般不超過4KB;

Cookie保存的信息包括Cookie名、Cookie值、到期時(shí)間、所屬域名和生效路徑;

瀏覽器每次向服務(wù)器發(fā)出請(qǐng)求,會(huì)在Http請(qǐng)求頭上帶上Cookie信息;

2.2 Cookie API

瀏覽器可以設(shè)置拒絕Cookie

window.navigator.cookieEnabled =false;

獲取當(dāng)前頁面的所有Cookie


寫入Cookie

document.cookie ='name=teren';//document.cookie一次只能寫一個(gè)cookie,而且是寫入而不是覆蓋;

[疑問]為什么讀取cookie是全部,而寫入則是一個(gè)一個(gè)呢?這與瀏覽器和服務(wù)器之間的cookie通信格式相關(guān)。

瀏覽器向服務(wù)器發(fā)送cookie時(shí),是將所有cookie一起發(fā)送;

GET/sample_page.htmlHTTP/1.1Host:www.example.orgCookie: cookie_name1=cookie_value1; cookie_name2=cookie_value2Accept: */*

服務(wù)器告訴瀏覽器需要存儲(chǔ)cookie時(shí),則是分行設(shè)定

HTTP/1.0200OKContent-type: text/html

Set-Cookie: cookie_name1=cookie_value1Set-Cookie: cookie_name2=cookie_value2; expires=Sun, 16 Jul 3567 06:23:41 GMT

刪除cookie

刪除cookie的簡(jiǎn)便方法就是設(shè)置expires = 0或者是過期時(shí)間,如expires = Thu,01-Jan-1970 00:00:01 GMT

cookie的屬性

Set-Cookie: value[;expires = date][;domain = domain][;path = path][;secure][;HttpOnly]

value:規(guī)定cookie的值,形式是鍵值對(duì);

expires:規(guī)定cookie過期時(shí)間,格式為形式為expires = someDate.toGMTString();

domain:指定cookie所在的域名,只有訪問的域名匹配domain屬性,cookie才會(huì)發(fā)送到服務(wù)器;

path:指定路徑,只有path屬性匹配向服務(wù)器發(fā)送的路徑,cookie才會(huì)發(fā)送,只要path屬性匹配發(fā)送路徑的一部分,都可以發(fā)送;

secure:指定cookie只能在加密協(xié)議HTTPS下發(fā)送到服務(wù)器;

HttpOnly:設(shè)置cookie不能被js讀取,這主要是放置XSS攻擊盜取cookie;

一個(gè)完整的瀏覽器設(shè)置cookie寫法:


3.Web Storage和Cookie的聯(lián)系與區(qū)別

特性cookieWeb Storag

數(shù)據(jù)生命周期服務(wù)器生成的話,為指定失效時(shí)間;瀏覽器段生成的話默認(rèn)為關(guān)閉瀏覽器后localStorage永久有效,除非使用localStorage.clear()清空;sessionStorage為關(guān)閉瀏覽器后;

存儲(chǔ)空間一般為4K一般5MB~10MB

與服務(wù)器通信每次攜帶在HTTP頭中僅在客戶端,如需通信,可通過get或post方法

應(yīng)用場(chǎng)景用戶登錄身份驗(yàn)證(結(jié)合HttpOnly相對(duì)安全性高)保存用戶購物車信息以及HTML5游戲的本地存儲(chǔ)

參考

https://segmentfault.com/a/1190000007819185

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容