javaScript 之 cookie

cookie 概述

cookie是服務(wù)器保存在瀏覽器端的一小段文本信息,每個cookie的大小一般不超過4KB。服務(wù)器給瀏覽器設(shè)置了cookie以后,瀏覽器沒錯向服務(wù)器發(fā)送請求時,就會附上cookie。每一個cookie都有對應(yīng)的域名瀏覽器。
cookie是提供給HTTP協(xié)議使用的,可以通過HTTP協(xié)議傳送。

cookie 內(nèi)容

cookie 一般包括一下內(nèi)容

  • cookie的名字
  • cookie的值
  • 到期時間
  • 所屬域名 (默認當(dāng)前域名)
  • 生效的路徑 (默認當(dāng)前網(wǎng)址)

cookie 作用

一般的cookie的用途有:

  • 對話: 保存用戶登錄狀態(tài),購物車信息等
  • 個性化:保存用戶的偏好設(shè)置,例如:字體大小,配色等
  • 追蹤:記錄和分析用戶的行為

生成 cookie

服務(wù)器生成cookie是通過設(shè)置HTTP請求頭的Set-Cookie來設(shè)置的。Set-Cookie可以有多個。除了可以設(shè)置Cookie的值,還可以設(shè)置附加的Cookie的屬性,一個Set-Cookie字段,可以包括多個屬性,沒有次序要求。

附加的屬性有以下幾點:

  • Expires=<date> (UTC格式的日期)
  • Max-Age=<non-zero-digit> (最大失效時間,定義自設(shè)置cookie開始后失效的秒數(shù))
  • Domain=<domain-value> (指定域名,默認指當(dāng)前的一級域名)
  • Path=<path-value> (指定路徑)
  • Secure (一個帶有安全屬性的cookie,只有在請求使用HTTPSSSL協(xié)議時,才發(fā)送到服務(wù)器。)
  • HttpOnly (禁止JavaScript訪問cookie,可以防范XSS跨站腳本攻擊)

Set-Cookie 語法

Set-Cookie: <cookie-name>=<cookie-value> 
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>
Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit>
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>
Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value>
Set-Cookie: <cookie-name>=<cookie-value>; Secure
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly

node.js 設(shè)置示例

response.setHeader('Set-Cookie',[`email=${user['email']}`,`Max-Age=${60*60*24*7}`]);

發(fā)送 cookie

在服務(wù)器給瀏覽器設(shè)置好cookie后,瀏覽器訪問服務(wù)器都會帶上相應(yīng)的cookie(滿足限制條件的前提下)。
服務(wù)器根據(jù)瀏覽器發(fā)送的cookie獲取用戶數(shù)據(jù),并返回給用戶,實現(xiàn)記住用戶的狀態(tài)等功能。

瀏覽器 訪問

瀏覽器可以通過document.cookie訪問當(dāng)前域名下的cookie,也可以通過這個屬性設(shè)置cookie。如果服務(wù)器設(shè)置了HttpOnly,那么就無法使用javascript來操作cookiel。

總結(jié)

以上就是對在下對cookie的簡單的理解,要想深入的了解還是需要動手操作的。本文參考來一些網(wǎng)上的開源文章(阮老師的CookieMDN的開源文檔)。
文中有認識不正確的地方,歡迎指正(可以發(fā)送郵件到本人郵箱『1398988546@qq.com』),轉(zhuǎn)載請注明文章來源。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容