前言:我们在有些时候可能需要访问客户端cookie来进行一些操作,比如登录验证,个性化设置等等,这时候我们就需要去配置cookie中间件使我们可以访问和设置客户端的cookie。
先在项目目录下执行以下指令下载cookie中间件:
npm install cookie-parser -S
然后在服务器中使用即可:
const express = require('express');
const app = express();
// 引入cookie-parser中间件
const cookieParser = require('cookie-parser');
const getRouter = require('./router/getRouter');
const postRouter = require('./router/postRouter');
const PORT = 8080;
app.use(express.json({limit:'1024mb'}));
// 使用cookie-parser中间件
app.use(cookieParser());
app.use(getRouter);
app.use(postRouter);
app.use(express.static(__dirname+'/public'));
app.listen(PORT,()=>{
console.log(`http://127.0.0.1:${PORT}/`);
});
在路由配置中添加cookie的操作:
const express = require('express');
const getRouter = express.Router();
const dir = __dirname.replace('\\router','');
// 设置cookie过期时间
const cookieExpires = () => {
const d = new Date(); // 获取当前时间
d.setTime(d.getTime() + (24 * 60 * 60 * 1000));
return d.toGMTString();
};
getRouter.get('/',(req,res)=>{
// 如果cookie中有msg这个数据就打印,没有就设置
if(!req.cookies.msg){
res.setHeader('Set-Cookie',`msg=${'Hello,JavaScript!'}; path=/; expires=${cookieExpires()}`);
}else{
console.log(req.cookies.msg);
}
res.sendFile(dir+'/public/html/index.html');
});
getRouter.get('/home',(req,res)=>{
res.sendFile(dir+'/public/html/home.html');
});
getRouter.get('/shopping',(req,res)=>{
res.sendFile(dir+'/public/html/shopping.html');
});
module.exports = getRouter;
可以看到我们通过res.setHeader()方法去设置了响应头,然后我们这里设置了 'Set-Cookie' 响应头,也就是告诉浏览器设置cookie。
所携带的参数含义:
msg: 我们设置的cookie
path: cookie可访问路径,/ 即为服务器下都可访问
expres: cookie过期时间
httpOnly: 禁止客户端访问该条cookie
如果我们想要设置多条cookie的话,把第二个参数写为数组形式即可(切忌不可重复设置同一响应头,否则报错)
现在来看一下效果:
可以看到客户端的cookie被设置上了,服务器没有打印msg,因为这次访问时并没有msg,我们刷新一下页面再看看。
可以看到服务器也获取到了客户端所携带的cookie并打印了出来。
服务器对客户端cookie的访问和设置到这里就结束了,感谢观看!