cookie和session都是存储数据用的,但是cookie和sessin还是有很大的区别。
首先cookie是在浏览器端保存数据,每次请求都会把数据带到浏览器端,所以cookie存储数据不安全。并且cookie存储数据大小有限,最大为4k.
session保存数据在服务器端,session存储数据安全性高。可以无限存储。session是基于cookie存在的,也就是说没有cookie就不会有session。但是session还存在一个隐患,就是session劫持。
cookie
cookie的创建
express为我们提供了api,直接调用api即可
res.cookie(key,value);
接下来我们就使用cookie发送一条数据
const express=require('express');
var server=express();
server.use('/',function(req,res){
res.cookie('user','blue');//存储一条数据
res.send();
})
server.listen(8080);
接下来我们开启服务器,在浏览器的地址栏:localhost:8080访问,然后打开控制台——application——cookies,我们就可以看到刚才我们存储的数据{'user','blue'}已经存储在cookie中了
1.png
接下来我们使用cookie接受一条数据
使用cookie接收数据的时候我们需要借助中间件——cookie-parser,所以首先我们需要下载一下
npm install cookie-parser
同样的,使用cookie接收一条数据,express也为我们提供了api.
req.cookies()
接下来看以下案例
const express=require('express');
const cookieParser=require('cookie-parser');//引入中间件
var server=express();
cookieParser.use();
server.use('/',function(req,res){
console.log(req.cookies());//输出发送的数据
res.send('ok');
})
server.listen(8080);
同样的,我们再次开启服务器,在浏览器地址栏中输入localhost:8080,然后我们发现在命令行中会输出我们的数据
2.png
对cookie进行加密
yinwei cookie存储数据不安全,所以我们在必要的时候可以对cookie数据进行加密,具体操作如下:
const express=require('express');
const cookieParser=require('cookieParser');
var server=express();
server.use(cookieParser('abcdefg'));
server.use('/',function(req,res){
//设置一个秘钥
req.secret='abcdefg';
res.cookie('user','blue',{signed:true});//对cookie数据进行签名
console.log('签名cookie:',req.signedCookies);
console.log('未签名cookie:',req.cookies);
});
server.listen(8080);
然后我们同样开启服务器,使用localhost:8080访问,打开控制台——application,然后我们会发现已经被加密了
3.png
session
使用session除了需要中间件cookie-parser,还需要中间件cookie-session
所以我们需要下载cookie-session
npm install cookie-session
接下来我们来看案例
const express=require('express');
const cookieParse=require('cookie-parser');
const cookieSession=require('cookie-session');
var server=express();
server.use(cookieParser());
server.use(cookieSession({
keys:['aaa','bbb','ccc']
}));
server.use('/',function(req,res){
console.log(req.session);
})
server.listen(8080);
网友评论