[英]HttpOnly cookie is set only after the second request
我有一个服务器(Node.js + Nest.js)和一个客户端(Angular 11)。
客户端提交登录请求,服务器登录用户并在响应中设置HttpOnly
cookie。
奇怪的是,cookie仅在提交 2 个请求后才在浏览器中设置,然后它工作正常(例如,如果我使用 postman,它会毫无问题地保存 cookie)。 我可以在每个响应(甚至是第一个响应)中看到标题中设置的 cookie。
客户端代码:
this.http.post<LoginResponse>(`server_path/login`, {
email: 'example@gmail.com',
password: '12345678',
rememberMe: false
}).subscribe(_ => console.log('Logged in!'), _ => console.log('wrong credentials'))
服务器代码:
const { result, error } = await this.authService.loginLocalUser(req.user, body.rememberMe)
if (error) throw new UnauthorizedException()
if (body.rememberMe) {
const oneYearFromNow = new Date()
oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1)
res.cookie('refreshToken', result.refreshToken, { httpOnly: true, expires: oneYearFromNow })
} else
res.cookie('refreshToken', result.refreshToken, { httpOnly: true })
return { accessToken: result.accessToken }
编辑:即使设置了cookie(第二次之后),我也看不到它在请求中发送,即使我在客户端和服务器上都使用了credentials: true
。
最后解决我的问题的事情只是清除浏览器缓存,不知道为什么会这样(仅在 chrome 中),但现在一切都按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.