千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)

簡(jiǎn)述 web 前端 cookie 機(jī)制?
Cookie 是進(jìn)行網(wǎng)站用戶身份,實(shí)現(xiàn)服務(wù)端 Session 會(huì)話持久化的一種非常好方式。Cookie 最
早由 Netscape 公司開發(fā),現(xiàn)在由 IETF 的 RFC 6265 標(biāo)準(zhǔn)備對(duì)其規(guī)范,已被所有主流瀏覽器
所支持
1、為什么需要 Cookie
HTTP 是一種無(wú)狀態(tài)的協(xié)議,客戶端與服務(wù)器建立連接并傳輸數(shù)據(jù),數(shù)據(jù)傳輸完成后,連接
就會(huì)關(guān)閉。再次交互數(shù)據(jù)需要建立新的連接,因此,服務(wù)器無(wú)法從連接上跟蹤會(huì)話,也無(wú)
法知道用戶上一次做了什么。這嚴(yán)重阻礙了基于 Web 應(yīng)用程序的交互,也影響用戶的交互
體驗(yàn)。如:在網(wǎng)絡(luò)有時(shí)候需要用戶登錄才進(jìn)一步操作,用戶輸入用戶名密碼登錄后,瀏覽
了幾個(gè)頁(yè)面,由于 HTTP 的無(wú)狀態(tài)性,服務(wù)器并不知道用戶有沒有登錄
Cookie 是解決 HTTP 無(wú)狀態(tài)性的有效手段,服務(wù)器可以設(shè)置或讀取 Cookie 中所包含的信息。
當(dāng)用戶登錄后,服務(wù)器會(huì)發(fā)送包含登錄憑據(jù)的 Cookie 到用戶瀏覽器客戶端,而瀏覽器對(duì)該
Cookie 進(jìn)行某種形式的存儲(chǔ)(內(nèi)存或硬盤)。用戶再次訪問該網(wǎng)站時(shí),瀏覽器會(huì)發(fā)送該 Cookie
(Cookie 未到期時(shí))到服務(wù)器,服務(wù)器對(duì)該憑據(jù)進(jìn)行驗(yàn)證,合法時(shí)使用戶不必輸入用戶名
和密碼就可以直接登錄
本質(zhì)上講,Cookie 是一段文本信息。客戶端請(qǐng)求服務(wù)器時(shí),如果服務(wù)器需要記錄用戶狀態(tài),
就在響應(yīng)用戶請(qǐng)求時(shí)發(fā)送一段 Cookie 信息??蛻舳藶g覽器保存該 Cookie 信息,當(dāng)用戶再次
訪問該網(wǎng)站時(shí),瀏覽器會(huì)把 Cookie 做為請(qǐng)求信息的一部分提交給服務(wù)器。服務(wù)器檢查 Cookie
內(nèi)容,以此來(lái)判斷用戶狀態(tài),服務(wù)器還會(huì)對(duì) Cookie 信息進(jìn)行維護(hù),必要時(shí)會(huì)對(duì) Cookie 內(nèi)容
進(jìn)行修改
2、 Cookie 的類型
Cookie 總時(shí)由用戶客戶端進(jìn)行保存的(一般是瀏覽器),按其存儲(chǔ)位置可分為:內(nèi)存式 Cookie
和硬盤式 Cookie。
內(nèi)存式 Cookie 存儲(chǔ)在內(nèi)存中,瀏覽器關(guān)閉后就會(huì)消失,由于其存儲(chǔ)時(shí)間較短,因此也被稱
為非持久 Cookie 或會(huì)話 Cookie。
硬盤式 Cookie 保存在硬盤中,其不會(huì)隨瀏覽器的關(guān)閉而消失,除非用戶手工清理或到了過
期時(shí)間。由于硬盤式 Cookie 存儲(chǔ)時(shí)間是長(zhǎng)期的,因此也被稱為持久 Cookie。
3、Cookie 的實(shí)現(xiàn)原理
Cookie 定義了一些 HTTP 請(qǐng)求頭和 HTTP 響應(yīng)頭,通過這些 HTTP 頭信息使服務(wù)器可以與客戶進(jìn)行狀態(tài)交互。
客戶端請(qǐng)求服務(wù)器后,如果服務(wù)器需要記錄用戶狀態(tài),服務(wù)器會(huì)在響應(yīng)信息中包含一個(gè)
Set-Cookie 的響應(yīng)頭,客戶端會(huì)根據(jù)這個(gè)響應(yīng)頭存儲(chǔ) Cookie 信息。再次請(qǐng)求服務(wù)器時(shí),客
戶端會(huì)在請(qǐng)求信息中包含一個(gè) Cookie 請(qǐng)求頭,而服務(wù)器會(huì)根據(jù)這個(gè)請(qǐng)求頭進(jìn)行用戶身份、狀態(tài)等較驗(yàn)。