在NestJS应用程序中,如果在Heroku上设置和获取cookie时遇到问题,可能是由于以下原因:
SameSite
属性。在某些情况下,Heroku可能会阻止跨站请求携带cookie,除非SameSite
属性被设置为None
并且Secure
属性被设置为true
。import { CookieOptions } from 'express';
const cookieOptions: CookieOptions = {
sameSite: 'none',
secure: true,
httpOnly: true,
maxAge: 3600000, // 1 hour
};
res.cookie('cookieName', 'cookieValue', cookieOptions);
Secure
属性。在Heroku上,所有请求都是通过HTTPS进行的,因此需要将Secure
属性设置为true
。const cookieOptions: CookieOptions = {
secure: true,
httpOnly: true,
maxAge: 3600000, // 1 hour
};
res.cookie('cookieName', 'cookieValue', cookieOptions);
.env
文件中的环境变量,请确保在Heroku上设置了相应的环境变量。heroku config:set NODE_ENV=production
heroku config:set COOKIE_SECRET=my-secret-key
cookie-parser
,请确保已将其添加到应用程序中。import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as cookieParser from 'cookie-parser';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.use(cookieParser());
await app.listen(3000);
}
bootstrap();
领取专属 10元无门槛券
手把手带您无忧上云