• Cookie(复数形态 Cookies),又称为 “小甜饼”。类型为 “小型文本文件,某些网站为了辨别用户身份而存储在用户本地终端(Client Side)上的数据。
    • 浏览器会在特定的情况下携带上 cookie 来发送请求,我们可以通过 cookie 来获取一些信息;
  • Cookie 总是保存在客户端中,按在客户端中的存储位置,Cookie 可以分为内存 Cookie 和硬盘 Cookie。
    • 内存 Cookie 由浏览器维护,保存在内存中,浏览器关闭时 Cookie 就会消失,其存在时间是短暂的;
    • 硬盘 Cookie 保存在硬盘中,有一个过期时间,用户手动清理或者过期时间到时,才会被清理;
  • 如果判断一个 cookie 是内存 cookie 还是硬盘 cookie 呢?
    • 没有设置过期时间,默认情况下 cookie 是内存 cookie,在关闭浏览器时会自动删除;
    • 有设置过期时间,并且过期时间不为 0 或者负数的 cookie,是硬盘 cookie,需要手动或者到期时,才会删除;

# package.json

{
  "name": "cookie-server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "koa": "^2.13.4",
    "koa-router": "^10.1.1"
  }
}

# server

node
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const testRouter = new Router();
// 登录接口
testRouter.get('/test', (ctx, next) => {
  //maxAge 对应毫秒
  ctx.cookies.set("name", "lain", {
    maxAge: 60 * 1000,
    httpOnly: false
  })
  ctx.body = "test";
});
testRouter.get('/demo', (ctx, next) => {
  // 读取 cookie
  const value = ctx.cookies.get('name');
  ctx.body = "你的cookie是" + value;
});
app.use(testRouter.routes());
app.use(testRouter.allowedMethods());
app.listen(8000, () => {
  console.log("服务器启动成功~");
})

cookie

  • cookie 的生命周期:
    • 默认情况下的 cookie 是内存 cookie,也称之为会话 cookie,也就是在浏览器关闭时会自动被删除;
    • 我们可以通过设置 expires 或者 max-age 来设置过期的时间;
      • expires:设置的是 Date.toUTCString (),设置格式是;expires=date-in-GMTString-format;
      • max-age:设置过期的秒钟,;max-age=max-age-in-seconds (例如一年为 606024*365);
  • cookie 的作用域:(允许 cookie 发送给哪些 URL)
    • Domain:指定哪些主机可以接受 cookie
      • 如果不指定,那么默认是 origin,不包括子域名。
      • 如果指定 Domain,则包含子域名。例如,如果设置 Domain=mozilla.org,则 Cookie 也包含在子域名中(如 developer.mozilla.org)。
    • Path:指定主机下哪些路径可以接受 cookie
      • 例如,设置 Path=/docs,则以下地址都会匹配:
        • /docs
        • /docs/Web/
        • /docs/Web/HTTP

# 客户端设置 cookie

  • js 直接设置和获取 cookie:

    console.log(document.cookie)
  • 这个 cookie 会在会话关闭时被删除掉;

    // 设置过期时间就是本地 cookie,不设置就是内存 cookie
    document.cookie = 'name=lain'
    document.cookie = 'age=16'
  • 设置 cookie,同时设置过期时间(默认单位是秒钟)

    document.cookie = 'name=lain;max-age=10'
  • 删除 cookie

    document.cookie = "name=lain;max-age=0"
Update on Views times

Give me a cup of [coffee]~( ̄▽ ̄)~*

Nico Niconi WeChat Pay

WeChat Pay

Nico Niconi Alipay

Alipay