之前講Http是無狀態(tài)的荣倾,服務(wù)器不會對Http請求有記憶性悯搔。在一些需要服務(wù)器記憶的場景,比如用戶識別舌仍、登錄狀態(tài)保持方面妒貌,略有不足通危。
Cookies機制應(yīng)運而生,瀏覽器發(fā)送請求后灌曙,服務(wù)器可在響應(yīng)報文中設(shè)置Cookies字段菊碟,瀏覽器接收到后存儲在Cookies的存儲區(qū)中。在后續(xù)符合要求的請求中在刺,會默認攜帶Cookies信息逆害。
Cookies字段
Set-Cookie
服務(wù)器通過Set-Cookie字段設(shè)置Cookies,以name=value的形式蚣驼。
還可設(shè)置Cookie的屬性值魄幕,如
- domain(域名)、path(路徑)隙姿,只有請求符合域名和path時才會攜帶Cookies梅垄。
- Expires和max-age厂捞,都表示Cookies的過期時間输玷,其中Expires是絕對時間,max-age為相對時間(即是一個時間長度靡馁,單位為ms欲鹏,收到請求時間為起始時間,推算出絕對時間)臭墨。兩者可以不一致赔嚎,最終以max-age為準。
- HttpOnly關(guān)鍵字胧弛,表示此Cookie只能在Http請求中讀取尤误,其他獲取方式無效(如document.cookie),可以提升隱私安全性结缚。
- SameSite屬性损晤,可用于防御跨站點偽造攻擊(XSRF)。決定在跳轉(zhuǎn)到的第三方網(wǎng)站中發(fā)送的偽造請求是否攜帶Cookie信息红竭∮妊可選三個值:Lax(默認值)、Strict和None茵宪。為Lax時在跳轉(zhuǎn)到的頁面中發(fā)送Get最冰、Head請求時可攜帶Cookies,為Strict時稀火,不允許攜帶Cookies暖哨;為None時不做限制。
- Secure關(guān)鍵字凰狞,表示只在Https加密請求中攜帶Cookies篇裁。
Cookie
瀏覽器收到響應(yīng)報文中的Set-Cookie
字段后箕慧,將cookies存儲到專用的存儲區(qū)。發(fā)送符合條件(域名茴恰、路徑颠焦、過期時間等上述幾個屬性)的請求時,會攜帶Cookie往枣。
Cookie中可有多個name-value字段伐庭,用分號隔開
實例
第一次請求該網(wǎng)站,還沒有Cookies分冈,服務(wù)器會在響應(yīng)報文中設(shè)置Cookies圾另。
第一次請求報文
第一次響應(yīng)報文
第二次請求該網(wǎng)站,已有Cookies雕沉,響應(yīng)報文中會攜帶Cookies集乔。
第二次請求報文
第二次響應(yīng)報文
用途
主要用于身份識別,從而進行登錄狀態(tài)保持坡椒、內(nèi)容和廣告的精準投放等事務(wù)扰路。