Node.js 为什么我的cookie中的数据返回为未定义?
我试图做的是将json web令牌设置到cookie中。当我使用console.log(token)时,它是被定义的,但是当我获得cookie时,它是未定义的。我已经尝试将res.cookie调用移动到几个不同的地方,但仍然得到未定义的结果 后请求Node.js 为什么我的cookie中的数据返回为未定义?,node.js,express,cookies,Node.js,Express,Cookies,我试图做的是将json web令牌设置到cookie中。当我使用console.log(token)时,它是被定义的,但是当我获得cookie时,它是未定义的。我已经尝试将res.cookie调用移动到几个不同的地方,但仍然得到未定义的结果 后请求 router.post('/', (req, res) => { const { errors, isValid } = validateLoginInput(req.body); if (!isValid) {
router.post('/', (req, res) => {
const { errors, isValid } = validateLoginInput(req.body);
if (!isValid) {
return res.status(400).json(errors);
}
const { email, password } = req.body;
User.findOne({ email })
.then(user => {
if (!user) return res.status(400).json({
msg: 'User does not exist',
auth: false
});
//Validate password
bcrypt.compare(password, user.password)
.then(isMatch => {
if (!isMatch) return res.status(400).json({ msg: 'Invalid credentials' });
const token = jwt.sign(
{ id: user.id },
process.env.JWT_SECRET,
(err, token) => {
if (err) throw err;
res.json({
token,
user: {
id: user.id,
name: user.name,
email: user.email,
auth: true
}
})
console.log(token)
res.cookie('access_token', token, {
maxAge: 604800,
httpOnly: true,
// secure: true
})
}
)
})
})
})
在
res.json
之前调用res.cookie
。我想您应该看到一条关于在响应即将发送后设置标题的警告。您是否在浏览器的开发工具中查看了resonse的设置Cookie
标题?我查看了。这就是我发现它是未加修饰的地方。你尝试在res.json
之前设置cookie吗?我只是尝试了一下,它成功了。谢谢。我从来没有收到过那个警告,但我确实收到了,而且奏效了。非常感谢