HTTP是無狀態(tài)協(xié)議,它不對之前發(fā)生過的請求和響應(yīng)狀態(tài)進行管理,無法根據(jù)之前的狀態(tài)進行本次請求處理。于是引入 Cookie 技術(shù)。
Cookie 技術(shù)通過在請求和響應(yīng)報文中寫入 Cookie 信息來控制客戶端的狀態(tài)。Cookie 會根據(jù)從服務(wù)器端發(fā)送的響應(yīng)報文內(nèi)的一個叫做 Set-Cookie 的首部字段信息,通知客戶端保存 Cookie。當下次客戶端再往該服務(wù)器發(fā)送請求時,客戶端會自動在請求報文中加入 Cookie值后發(fā)送出去。服務(wù)器端發(fā)現(xiàn)客戶端送來的 Cookie 后,會去檢查究竟是從哪一個客戶端發(fā)來的連接請求,然后對比服務(wù)器上的記錄,最后得到之前的狀態(tài)信息。

2019-08-13_195147.jpg
Cookie 特點:
- 服務(wù)器通過 Set-Cookie 響應(yīng)頭設(shè)置 Cookie
- 瀏覽器得到 Cookie 之后,每次請求都帶上 Cookie
- 服務(wù)器讀取 Cookie 就知道登錄用戶的信息
- Cookie 只在所登錄時使用的瀏覽器有效
- Cookie 存放位置:Windows 存在C盤一個文件
- Cookie 可以被篡改,不安全
- Cookie 有效期默認20分鐘,但也由瀏覽器決定,而后端可以強制設(shè)置
- Cookie 遵守同源策略嗎?
也有,不過跟 AJAX 的同源策略稍微有些不同。
當請求 qq.com 下的資源時,瀏覽器會默認帶上 qq.com 對應(yīng)的 Cookie,不會帶上 baidu.com 對應(yīng)的 Cookie。
當請求 v.qq.com 下的資源時,瀏覽器不僅會帶上 v.qq.com 的Cookie,還會帶上 qq.com 的 Cookie。