01.cookie

1. 为什么要用cookie或session

因为http协议是无状态协议(没有记忆功能),当我们使用了cookie或session这些技术后,就可以让我们的系统有记忆的功能

2. cookie的认识

  • 本质就是一个字符串,里面包含浏览器和服务器的沟通信息(交互产生的信息)。
  • 存储的形式:key-value的形式存储
  • 浏览器会自动携带该网站下的全部cookie到服务器端。

3. cookie的分类:

  • 会话cookie:
    • 后台设置cookie时,没有设置maxAge的cookie默认是会话cookie
    • 会话cookie存储在浏览器运行的那块内存上
    • 关闭浏览器后,会话cookie会自动消失
  • 持久化cookie:
    • 后台设置cookie时,设置了maxAge的cookie
    • 存在用户的硬盘上
    • 看过期时间,一旦过了过期时间,自动销毁。
    • 如果没有到过期时间,但用户清理了,cookie也会消失

4. cookie的工作原理:

  • 当浏览器第一次请求服务器的时候,服务器可能返回一个或多个cookie给浏览器
  • 浏览器判断cookie的种类:
    • 会话cookie:存储在浏览器运行的那块内存上
    • 持久化cookie:存储在用户的硬盘上
  • 以后请求该服务器的时候,自动携带上该网站的所有cookie(无法进行干预)
  • 服务器拿到之前自己种下的cookie,分析里面的内容,校验cookie的合法性,根据cookie里保存的内容,进行具体的业务逻辑

5. 注意:

不同的语言,不同的后端架构cookie的具体语法不一样。但是cookie原理和工作过程是不变的

6. 设置cookie

  • 通过响应对象设置cookie:res.cookie(key, value, option)即可,设置多个cookie,则调用多次res.cookie()。
  • 必须在res.send()前调用res.cookie()。
  • option配置属性:
    • maxAge: cookie的有效时间,单位是毫秒
    • httpOnly: true则只能服务器访问cookie,客户端不能访问(客户端访问cookie用document.cookie,是一个字符串,格式位“key1=val1; key2=val2; …" )
    • path: cookie只能在某个路径中使用
    • domain:设置cookie只能在某个域名中使用

7. 获取cookie:

  • 需要用到第三方的cookie-parser中间件

  • 安装cookie-parser:npm install cookie-parser

  • 使用:let cookieParser = require(“cookie-parser”);

    ​ app.use(cookieParser());

  • 通过请求对象获取cookie:req.cookies.xxx;

8.代码示例:

const express = require("express");
const app = express();
//获取cookie的中间件,将客户端的cookie解析到req.cookies属性上
const cookieParser = require("cookie-parser");
//设置cookie
app.get("/setcookie", (req, res)=>{
  res.cookie.name = 'zhangsan';
  res.cookie.age = 12;
  res.send("设置cookie")
})//获取cookie
app.get("/getcookie", (req, res)=>{
  console.log(req.cookies.name);
  console.log(req.cookies.age);
  res.send("获取cookie")})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值