Не удается получить файлы cookie из запроса в NestJS

#nestjs

Вопрос:

У меня есть бэкэнд, отлично работающий в NestJS.

Теперь мне нужно добавить некоторые функции с помощью файлов cookie. Поэтому я установил анализатор файлов cookie, импортировал его в основной файл import * as cookieParser from 'cookie-parser' и вставил в приложение app.use(cookieParser()) .

В контроллере я импортировал запрос и ответ из express: import { Request, Response } from 'express';

Конечная точка выглядит следующим образом:

   @Get('/refresh') 
  async refreshToken(
    @Res({ passthrough: true }) response: Response,
    @Req() request: Request)
  {
    const {refreshToken} = request.cookies // refreshToken is [Object: null prototype] {}
    const userData = await this.authService.refresh(refreshToken)
    response.cookie('refreshToken', userData.refreshToken, {maxAge: 30 * 24 * 60 * 60 * 1000, httpOnly: true, secure: true})
    return userData
  }
 

Я могу добавить файлы cookie в ответ, но проблема в том, что в запросе вообще нет файлов cookie — он показывает [Объект: нулевой прототип] {}

Я следил за официальной настройкой https://docs.nestjs.com/techniques/cookies

Любые предложения очень ценятся!

Комментарии:

1. Как вы пытаетесь установить файлы cookie в первую очередь? Если файлы cookie недоступны, было бы нормально, если бы вы вернули пустой объект здесь. Это просто следующие строки, которые пытаются установить refreshToken ? Если это так, вам нужно убедиться, что браузер действительно обрабатывает это, как ожидалось, и фактически отправляет их обратно. Может быть, что-то не так с вариантами, которые вы передаете

2. Спасибо, Джесси! Как оказалось, проблема заключалась в настройках автомобилей.

3. …автоспеллинг фоккинга… Я имею в виду настройки CORS, конечно )

Ответ №1:

Проблема была в CORS

У меня было это app.enableCors()

но после того, как я добавил cors в создание приложения, как это (с учетными данными: true), все работает просто отлично:

const app = await NestFactory.create(AppModule, { cors: {credentials: true, origin: process.env.CLIENT_URL} })