Node.js服务器配置(进阶四:访问和设置客户端cookie)

前言:我们在有些时候可能需要访问客户端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的访问和设置到这里就结束了,感谢观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值