Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么我的cookie中的数据返回为未定义?_Node.js_Express_Cookies - Fatal编程技术网

Node.js 为什么我的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) {

我试图做的是将json web令牌设置到cookie中。当我使用console.log(token)时,它是被定义的,但是当我获得cookie时,它是未定义的。我已经尝试将res.cookie调用移动到几个不同的地方,但仍然得到未定义的结果

后请求

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吗?我只是尝试了一下,它成功了。谢谢。我从来没有收到过那个警告,但我确实收到了,而且奏效了。非常感谢