node.js - 我在 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)。
解决方案
我认为您需要设置以下属性作为响应
1.'Access-Control-Allow-Origin':您可以从请求标头中获取的原始值
- '访问控制允许凭据':真,
推荐阅读
- html - Excel VBA IE NAVIGATE 方法不返回完整的 HTML 页面
- reactjs - 如何在 div ReactJS 中将 JSON 中的数据显示为 flex 行
- python - 我正在尝试使用神经网络使用 tensorflow 对波士顿数据集进行回归。不知何故,我把所有的预测都弄错了
- shiny - 移动设备的闪亮 selectInput(multiple = TRUE) 问题
- angular - Auth0-lock 不会显示关闭按钮角度
- javascript - 如何使我的 CSS 动画对鼠标悬停更敏感
- javascript - React 无法从 api 渲染元素数组
- azure-devops - Azure Devops 构建管道不构建可执行文件
- javascript - 如何在同一页面上调用具有先前实例的浏览器选项卡
- python - 如何从视图中分配 DRF 序列化程序只读字段