一、cookie和session简单说明
- 1.cookie:
【cookie】是在浏览器保存一些数据,每次数据请求浏览器都会把数据传给服务器,cookie容量小,只能储存数据【4k】,客户端能够通过 【document.cookie = "read_mode = xxl"】进行修改,所以并不安全。 - session:
【session】保存数据,并且是保存在服务器上的,更安全,容量随服务器大小变化。
- session:
二、有关cookie的操作
一、向浏览器种下cookie
- 1、 下载 【express、cookie-parser】
cnpm install express cookie-parser
- 2、第一种: 种下cookie数据不进行签名 【res.cookie】
const express = require('express')
let server = express();
server.use('路径', (req,res) => {
res.cookie('名称','名称的值',{path:'访问的路径',age})
res.send('内容一')
})
server.listen(8080)
预览:
image.png
- 3、 第二种:以签名式种下cookie数据
const cookieParser = require('cookie-parser');
let server = express();
// server.use(cookieParser('要签名的字符串') 这里一定要写上,解析这个cookie-parser
// cookie需要签名,必须要引入cookie-parser,并对其解析,把要签名的字符作为参数传入cookieParser中
server.use(cookieParser('要签名的字符串'))
server.use('路径',(req,res)=> {
// server.recret('要签名的字符串')这里可以省略不写
server.recret('要签名的字符串')
// 对name这个cookie的值进行签名操作
server.cookie('名称','名称的值', {signed:true})
server.send('内容二')
})
server.listen(8080)
预览:
image.png
二、服务器获取浏览器发送过来的cookie的值
- 1、第一种: 获取不带加签名的cookie的数据 【req.cookies】
const express = require('express');
let server = express();
server.use('路径',(req,res) =>{
let data = req.cookies;
res.send(`接收过来的cookie数据${data}`)
})
server.listen(8080)
预览:
image.png
- 2、第二种:获取带签名的cookie的数据 【req.signedCookies】
// 对写入的cookie进行签名并获取有签名的cookie的值
const express = require('express');
const cookiePariser = require('cookie-parser');
let server = express();
// cookie需要签名,必须要引入cookie-parser,并对其解析,把要签名的字符作为参数传入cookieParser中
server.use(cookiePariser('sdfljsfk'))
server.use('/', (req, res) => {
// 对name这个cookie的值进行签名操作
res.cookie('name', 'xxl',{signed: true})
// 获取有签名的cookie
console.log('有签名的cookie', req.signedCookies)
res.send('server3')
})
server.listen(8083)
预览:
image.png
三、删除浏览器上的cookie 【res.clearCookies('属性名')】
// 删除浏览器的cookie
const express = require('express');
let server = express();
server.use('/', (req, res) => {
// res.clearCookie('属性名'),删除指定名的cookie
res.clearCookie('name')
console.log(res.cookies)
res.send('server4')
})
server.listen(8084)
预览:
image.png
————————************************************************************************************************************——————
三、session相关操作
- 下载【cookie-session】
cnpm i cookie-session
- 向浏览器种下session的值
const express = require('express');
const cookieParser = require('cookie-parser');
const cookieSession = require('cookie-session');
let server = express();
server.use(cookieParser());
// cookie-session要放在cookie-parser后面,等把浏览器发过来的cookie解析掉,才能得到其值
server.use(cookieSession({
name: 'xxlsession', // 更改session的名称
keys: ['aaa', 'bbb', 'ccc'], // session会循环例用keys进行加密
maxAge: 10*1000 // 服务器session过期时间,以毫秒为单位
}))
server.use('/', (req, res) => {
if(req.session['count'] === undefined) {
req.session['count'] = 0;
} else {
req.session['count']++;
}
req.session['age'] = 5;
console.log(req.session['age'])
res.send('server')
})
server.listen(8080)
预览:
image.png
- 3.删除session 【delete req.session】
const express = require('express');
const cookieParser = require('cookie-parser');
const sessionCookie = require('cookie-session');
let server = express();
let arr = [];
for(i=0; i<100000; i++) {
arr.push('sign' + Math.random())
}
server.use(cookieParser());
server.use(sessionCookie({
keys: arr
}))
server.use('/', (req, res) => {
delete req.session;
console.log(req.session)
res.send('server2')
})
server.listen(8082)
预览:
image.png
网友评论