Cookie 特点

  1. 服务器通过 Set-Cookie 响应头设置 Cookie
  2. 浏览器得到 Cookie 之后,每次请求都带上 Cookie
  3. 服务器读取 Cookie 就知道客户端用户的信息

Cookie 特点详解

服务端写法

response.setHeader('Set-Cookie', `sign_in_email=${email}`)

服务端读法

// 这样写防止 cookies 不存在
let cookies = ''
if(request.headers.cookie) {
    cookies = request.headers.cookie.split('; ')
}
// hash 拆解套路
let hash = {}
for(let i=0; i<cookies.length; i++) {
    let parts = cookies[i].split('=')
  let key = parts[0]
  let value = parts[1]
  hash[key] = value
}
console.log(hash)

Cookie 设置成功的话,可以在响应头看到

Cookie 设置成功后的影响,以后同域名下所有请求头会自动附带 cookie 信息

可以把 cookie 想象成一张门票,域名就是公园。
一旦在某个地方,服务端通过响应头把门票放到你的口袋里。以后不管你走到公园内哪个地方,门票都会揣在你的口袋里四处跟着你

Cookie 过期时间设置与删除

  1. Cookie 过期时间设置

    // 指定时间点
    Cookies('xx').Expires = # 2010/11 12:13:14#
    Cookies.set('xx', 'yy', new Date("2010,11,12"))
    // 指定时长
    Cookies('xx').Expires = now + 1 // 1 天后过期
    Cookies('xx').Expires = now + 1 / 86400 // 1 秒后过期
  2. 删除 Cookie

= 将过期时间设置为过去

Cookies('xx').Expires = now - 1

Cookie相关问题

  1. 我在 Chrome 登录得到了 Cookie,用 Safari 访问,Safari 会带上 Cookie 吗?
    a: 不会
  2. Cookie 存在哪?
    a: Windows 存在 C 盘的一个文件里
  3. 票能作假吗?
    a:可以,作假方式如下

然后刷新页面,确认请求头(发现更改生效)

  1. cookie 有效期吗?
    默认有效期20分钟左右

后端可以强制设置有效期