我在 NEST.JS LAMBDA PROXY 应用程序上收到 CORS 错误
Posted
技术标签:
【中文标题】我在 NEST.JS LAMBDA PROXY 应用程序上收到 CORS 错误【英文标题】:I am getting CORS error on NEST.JS LAMBDA PROXY application 【发布时间】:2021-10-26 14:34:47 【问题描述】:我正在使用 Lambda 代理应用程序,该应用程序在部署到 AWS 后会在请求后引发 cors 错误。
CORS 在 NEST.js 应用程序端启用
async function bootstrap(): Promise<Handler>
if (!cachedServer)
const expressApp = express();
const nestApp = await NestFactory.create(AppModule, new ExpressAdapter(expressApp));
const validationOptions =
validationError: target: false ,
;
nestApp.useGlobalPipes(new ValidationPipe(validationOptions));
const logger: Logger = new Logger(new PinoLogger(null));
nestApp.useLogger(logger);
nestApp.enableCors();
nestApp.use(helmet());
nestApp.useGlobalFilters(new ServiceExceptionFilter());
await nestApp.init();
cachedServer = serverlessExpress( app: expressApp );
return cachedServer;
export const handler = async (event: any, context: Context, callback: any) =>
if (event.path === '/swagger')
event.path = '/swagger/';
event.path = event.path.includes('swagger-ui') ? `/swagger$event.path` : event.path;
const server = await bootstrap();
return server(event, context, callback);
;
这里是 serverless.yml 配置部分
functions:
main:
handler: src/lambda.handler
events:
- http:
method: ANY
path: /any+
cors: true
有人可以解释这里有什么问题吗?为什么我从部署的 AWS 应用程序中收到 cors 错误?我正在使用 root 用户来运行该应用程序。它在本地工作正常。顺便说一句,如果它可以帮助我拥有运行良好但 POST 和 PATCH 不起作用的健康端点 (GET)。
【问题讨论】:
【参考方案1】:我认为您需要设置以下属性作为响应
1.'Access-Control-Allow-Origin':您可以从请求标头中获取的原始值
-
'Access-Control-Allow-Credentials': true,
【讨论】:
以上是关于我在 NEST.JS LAMBDA PROXY 应用程序上收到 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章
Nest.js - 请求实体太大 PayloadTooLargeError:请求实体太大