reactjs 请求中存在cookie标头,但在生产中保存在浏览器中

ippsafx7  于 2023-01-30  发布在  React
关注(0)|答案(1)|浏览(139)

我正在从react fetch为auth向node express发出cors请求。我收到cookie头作为响应,但它没有保存在浏览器中,但当我发出另一个请求时,浏览器将发送在先前请求中收到的先前cookie。
注意,这只发生在生产。一切都很好,在开发模式。我谷歌它,并尝试不同的方法添加凭据:“包含”,sameSite无,安全,httpOnly,甚至域,但它不工作。
下面是我的后端代码

if (process.env.NODE_ENV === "production") {
                    res.cookie('token', token,{
                        expires: new Date(Date.now() + 864000000), // for 10 days in production only 864000000
                        sameSite: 'none',
                        secure:true
                     }
                     )
                }else{
                    res.cookie('token', token, {
                        expires: new Date(Date.now() + 864000000), // for 10 days in production only 864000000
                        sameSite: 'none',
                    })
                }

这是我用于登录前端代码

const result = await fetch(`${import.meta.env.DEV ? import.meta.env.VITE_BACKEND_DEV_URL : import.meta.env.VITE_BACKEND_URL}/v3/api/user/signin`, {
            method: 'POST',
            credentials:'include',
            headers: {
                "Content-Type": "application/json",
            },
            body: JSON.stringify({
                email,
                password
            })
        })
9gm1akwq

9gm1akwq1#

在一个环境中设置的Cookie将存在于另一个环境中,只要名称相同。
您可以更改名称,例如在非生产环境中为每个cookie附加“-dev”:

if (process.env.NODE_ENV === "production") {
    res.cookie('token', token, {
        expires: new Date(Date.now() + 864000000), // for 10 days in production only 864000000
        sameSite: 'none',
        secure: true
    })
} else {
    res.cookie('token-dev', token, { //changed here
        expires: new Date(Date.now() + 864000000), // for 10 days in production only 864000000
        sameSite: 'none',
    })
}

相关问题