繁体   English   中英

HttpOnly cookie 仅在第二次请求后设置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM