是否可以删除设置为HttpOnly:true的浏览器cookie?
我的登录端点很简单,如下所示:
async login(@Ip() ipAddress, @Request() req, @Res() res: Response) {
const auth = await this.basicAuthService.login(req.user, ipAddress);
const cookieOptions = setTokenCookie();
res.cookie('token', auth.token, { httpOnly: true, expires: myDate()});
res.cookie('refreshToken', auth.refreshToken, { httpOnly: true, expires: myDate()});
res.send(auth);
}工作非常完美,我用axios调用了我的/login前端
const res = await axios.post(`${baseUrl}/authentication/login`, { email, password }, { withCredentials: true });到目前为止,很好,饼干已经准备好了。但是我想在注销时删除这些cookie,因为它们是HttpOnly:true,所以我不能在前端删除它们。我尝试过使用res.clearCookie()方法,但它们仍然在浏览器中。
async logout(@Request() req, @Res() res: Response) {
res.clearCookie('refreshToken' ,{ domain: 'localhost', path: '/', expires: new Date(0) });
res.clearCookie('token', { domain: 'localhost', path: '/', expires: new Date(0) });
console.log('cookies deleted');
res.send();
}我认为这是不可能的,然后,我尝试登录我的Facebook帐户,我能够看到一些HttpOnly:true饼干,当注销时被删除。
发布于 2022-09-06 17:08:17
我知道这个问题差不多有两年了,但这是我在试图解决同一个问题时发现的第一个联系。
来自快递4.x - API参考
Web浏览器和其他兼容的客户端只有在给定的选项与res.cookie()相同的情况下才会清除cookie,这不包括expires和maxAge。
要正确删除httpOnly cookie,必须将其作为第二个参数中的选项传递如下
res.clearCookie('token', { httpOnly: true });我相信这同样适用于sameSite,secure等。
https://stackoverflow.com/questions/64723114
复制相似问题