首页 > 解决方案 > 我在 NEST.JS LAMBDA PROXY 应用程序上收到 CORS 错误

问题描述

我正在使用 Lambda 代理应用程序,该应用程序在部署到 AWS 后会在请求后引发 cors 错误。

在 NEST.js 应用程序端启用了 CORS

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)。

标签: node.jsamazon-web-servicesaws-lambdacorsnestjs

解决方案


我认为您需要设置以下属性作为响应

1.'Access-Control-Allow-Origin':您可以从请求标头中获取的原始值

  1. '访问控制允许凭据':真,

推荐阅读