NestJs的Cookie
Cookie简介
HTTP是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用Cookie(保存在计算机本地)或者Session(保存在服务器)实现
cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据。
Cookie特点
1.cookie保存在浏览器本地
2.正常设置的cookie是不加密的,用户可以自由看到;用户可以删除cookie,或者禁用它
3.cookie可以被篡改
4.cookie可以用于攻击
5.cookie存储量很小。未来实际上要被localStorage替代,但是后者IE9兼容。
在NestJs中使用Cookie
1.安装cookie,代码如下:
cnpm install cookie-parser --save
npm i -D @types/cookie-parser
2.在main.ts中引入cookie-parser
import * as cookieParser from 'cookie-parser'
3.在main.ts配置中间件
app.use(cookieParser());
4.设置cookie
res.cookie("name" ,'zhangsan',{maxAge: 9000O0, httpOnly: true});
//HttpOnly 默认 false不允许客户端脚本访问
访问相应的URL,并打开开发者工具,选择应用程序的cookie就可以看见username及其值
5.获取cookie
@Getf'getCaokies']
getCookies(@Request() req){
return req.cookies.name;}
访问对应的URL,就可以在网页和终端中看见返回的username的值
NestJs中cookie加密
1.配置中间件的时候需要传参
app.use(cookieParser(‘123456'));
2.设置cookie的时候配置signed属性
res.cookie('userinfo','hahaha', {domain:'.ccc.com',maxAge:900000,httpOnly:true,signed:true});
3.signedcookie调用设置的cookie
consolc.log(req.signedCookics);
我们打开URL访问,发现不能直接看见username的值,并且终端也不能接受