为什么在 node express js 中自动设置 cookie 以响应 http 请求?

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

我正在开发一个网络应用程序,并且已经有一个登录系统通过 cookie 保持会话。现在我想实现注销功能。我的想法是删除 cookie 会话,但即使我在 node express 发回响应时以各种方式清除 cookie,cookie 也会自动设置。 我真的不知道为什么。我正在使用带有通行证的节点快速服务器登录谷歌,快速会话,前端反应,请求 axios。

这是我对客户的要求:

const Logout = ({ login, setLogin}:Props ) => {
    useEffect(() => {
        const _response = axios({
            method: 'get',
            url: `http://127.0.0.1:3002/auth/logout`,
            withCredentials: true,

        }).then(res => {
            if(res.data === 'ok') setLogin(false)
            console.log(res.headers['session']);
            // window.location.replace('/projects')
        })

    }, [])
    return (<></>);
}

这就是我从服务器获得响应的方式:

router.get("/logout", (req, res, next) => {
    res.clearCookie('session')
    console.log(res.cookie.name, 'wwwww');
    res.setHeader('Set-Cookie', 'ppp')
    res.cookie('Set-Cookie', 'ZZZ', { maxAge: 900000, httpOnly: true })
    res.send('ok')
});

正如您从响应标头上附加的图像中看到的那样,我有多个 cookie“Set-Cookie”,但默认情况下会插入最后一个(?),我不知道是谁以及为什么插入。

我尝试使用 axios 和 fetch 方法发送不同的请求,将 GET 更改为 POST 等等等等。

有一个 cookie 会话,它不会让我有效地注销。我认为解决方案是删除该 cookie,以便我可以使用另一个 gmail 帐户登录。如果有更好的解决方案,请告诉我。

感谢所有能帮助我的人!

javascript node.js express cookies setcookie
© www.soinside.com 2019 - 2024. All rights reserved.