网上收索node 操作cookie的帖子一大把,大多都是res.setHeader('Set-Cookie', 'username='+req.body.username+'; path=/; max-age=360000'); 说这样的来设置cookie。可是我今天设置cookie的时候发现cookie总不对。
我的代码如下“
res.setHeader('Set-Cookie', 'username='+req.body.username+'; path=/; max-age=0')//删除cookie
res.setHeader('Set-Cookie', 'username='+req.body.username+'; path=/; max-age=360000');//设置cookie
我想要的结果就是 先删除原有的cookie 然后重新赋值,可是 结果就是怎么都删不掉。
后来我发现原来是cookie 不对。怎么说呢?
首先 我第一次登陆的时候 用的账号是huangchao.
然后点击登陆按钮 尽然到后台登陆 事件以后 我设置了cookie
res.setHeader('Set-Cookie', 'username='+req.body.username+'; path=/; max-age=360000');//设置cookie
实际上 这个时候 cookie 根本不存在,因为服务端还没有向客户端 发送数据,所以 还没有cookie。 等res.json()执行完以后。这个时候跳到客户端 ,调试 documeng.cookie的时候会得到相应的cookie。
然后后问题就来了。
我换一个账号登陆。我用admin登陆
我就是想替换cookie 代码如下:
res.setHeader('Set-Cookie', 'username='+req.body.username+'; path=/; max-age=0')//删除cookie
res.setHeader('Set-Cookie', 'username='+req.body.username+'; path=/; max-age=360000');//设置cookie
为什么总删不掉cookie呢?是因为这个时候 服务端得到的req.headers.cookie的cookie是客户端发给服务端的,也就是说,这个时候的cookie中的usename的值是上一次服务端所设置的值。
后来我的代码改成了:
var cookies=req.body.cookie||[];
if(cookies.length>0){
for(var i in cookies){
if(cookies[i].split('=')[0]=="username"){
res.setHeader('Set-Cookie', cookies[i]+'; path=/; max-age=0');
}
}
}
res.setHeader('Set-Cookie', 'username='+req.body.username+'; path=/; max-age=360000');
res.json("ok");
问题解决了
本文探讨了Node.js环境下使用res.setHeader方法设置和删除Cookie时遇到的问题。通过实例分析,解释了Cookie初始化阶段服务端未响应导致无法正确删除原有Cookie的原因,并提供了修正方案。
9075

被折叠的 条评论
为什么被折叠?



