NestJS使cors能够投入生产
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NestJS使cors能够投入生产相关的知识,希望对你有一定的参考价值。
我在the official tutorial之后的NestJS应用程序中启用了CORS,所以我的main.ts
如下所示:
import { FastifyAdapter, NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule, new FastifyAdapter(), { cors: true });
await app.listen(3000);
}
bootstrap();
当我使用npm run start:dev
运行应用程序时,它可以正常工作。
然而,当我尝试使用npm run webpack
首先编译应用程序然后使用node server.js
运行它时,cors将无法工作。
来自客户端的http请求将失败:
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,'http://localhost:8000'原产地不允许进入。响应具有HTTP状态代码404。
答案
尝试使用这里描述的方法https://docs.nestjs.com/techniques/security#cors
const app = await NestFactory.create(ApplicationModule);
app.enableCors();
await app.listen(3000);
另一答案
悲伤,就知道你也尝试:
const app = await NestFactory.create(ApplicationModule);
app.enableCors();
await app.listen(3000);
它仍然无法正常工作。
确保在服务器端启用了cors,这应该是这样的:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Accept');
next();
});
并确保您的浏览器支持cors。如果所有这些仍然不起作用,我会建议你下载Chrome的Allow-Control-Allow-Origin扩展,它应该解决你的问题。
另一答案
不知何故,问题是使用npm run webpack
编译它。如果我使用prestart:prod
编译它然后它将工作。
感谢@ georgii-rychko通过评论提出建议。
以上是关于NestJS使cors能够投入生产的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NestJs 在 firebase 函数中激活 CORS