即使在 Secure 和 SameSite=none 之后,Chrome 也会删除 cookie

问题描述 投票:0回答:1

我在部署网站时遇到问题。开发过程中一切正常,但现在我第一次转向生产,将后端托管在 Fly.io 上,将前端托管在 vercel 上。我的 jwt cookie 遇到了这个奇怪的问题,它就消失了...我检查了邮递员,它确实返回了我的 jwt cookie,但它在我的网站上不起作用。

我试图查明问题并注释掉我的重定向,以便我可以看到发生了什么..结果是,jwts 正常返回!然后我转到任何其他页面,我的身份验证中间件没有成功,我被前端重定向回登录页面...显然 chrome 正在对 cookie 做一些事情,所以我看到了一些关于设置 SameSite 的其他帖子:' None' 和 secure:true 并尝试了这些,但没有成功。还!!我尝试将这个“domain: '.drew-book-jo6x-f97k35gp8-andrew-marabantes-projects.vercel.app',”添加到我的 cookie 中,但它只是让我的 res.cookie 不发送任何内容..

这是我的一些代码:

后端Cookie功能:

const loginUser = (req, res) => {
    const username = req.body.username;
    const password = req.body.password;

    User.find({ username: username })
        .then(async (user) => {
            if (user.length === 0) {
                res.json('Wrong Username')
            } else {
                 if (!user[0].password) {
                     return res.json('google')
                }
                const hashedPass = user[0].password
                const match = await auth.bcrypt.compare(password, hashedPass);
                if (!match) {
                    res.json('Wrong Password!')
                } else {
                    const accessToken = auth.jwt.sign({ userId: user[0]._id },       process.env.SECRET, { expiresIn: '10m' });
                    res.cookie('jwt', accessToken, { httpOnly: true, path: '/', sameSite: 'None', secure: true })
                    return res.json('success')

                }
            }
        })
        .catch(err => res.json('Error'))

}

前端:

本质上,前端只是在挂载时触发的使用效果中的 GET 获取调用,在凭证中传递 jwt,您不想看到所有这些。

我怀疑 chrome 正在删除我的 cookie,但我对部署太陌生了,我不知道它是否可能是 vercel 或 Fly.io 的东西。请帮忙!谢谢

google-chrome cookies vercel fly
1个回答
0
投票

我猜这是一个 CORS 问题...将其添加到我的提取中可以解决问题,但出于安全原因确实很糟糕:

        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Headers': '*',
© www.soinside.com 2019 - 2024. All rights reserved.