#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} })