xzz2021
Published on 2025-09-16 / 0 Visits
0
0

nestjs使用cookies

  1. 正常的数据都是nestjs接管了响应的, 所以可以直接return,而要设置cookie需要手动调用res

  2. 首先全局设置允许cookies携带跨域

    import cookieParser from 'cookie-parser';
    
      app.use(cookieParser());
      app.enableCors({
        origin: ['http://localhost:4000'],
        credentials: true,
      });
    
  3. controller使用装饰器,传递Response

    import { Response } from 'express';
      
    @Post('login')
      login(@Body() loginInfo: LoginInfoDto, @Res() res: Response) {
        return this.authService.login(loginInfo, res);
      }
    
  4. 主逻辑代码使用,设定并返回数据

    res.cookie('rt', refreshToken, {
            httpOnly: true,
            secure: !true,
            sameSite: 'lax',
            path: '/',
            maxAge: 15 * 24 * 60 * 60 * 1000,
          });
    return res.status(200).json({ accessToken });
    
  5. 如果希望可以直接return返回数据,需要传递{ passthrough: true }参数

    @Res({ passthrough: true })  //  让 Nest 继续负责序列化(JSON)
    
  6. 以上方案二选一, 不然前端调用接口就会一直处于pending状态,等待数据返回


Comment