如果在发送响应之前设置cookie,我遇到了问题。 就像我想为登录用户设置cookie然后我想发送响应确定。
User.find({user:req.body.username,password:req.body.password})
.exec(function(err,row){
if(err){
console.log(err);
res.negotiate();
}
else if(row.length){
res.cookie('user',{user:row[0].user,role:row[0].role},{
signed:true,
httpOnly:true,
maxAge:1000*60*60*24*5
});
res.end('You are logged in successfully');
}
else{
console.log('nothing executed');
res.end('Not such a user');
}
});
确保在res.cookie()
res.end()
答案 0 :(得分:2)
通过向浏览器发送Set-Cookie
标头来“设置”Cookie。因此,严格来说,在发送响应之前无法设置cookie 。调用res.cookie()
只需准备相应的标题,但实际上并不发送它。
我看到你使用cookie来存储用户数据,所以在这种情况下你可能最好使用会话模块,如https://github.com/expressjs/session - 它可以让你随时读取或写入数据并处理低 - 等级cookie业务。