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

高质量代码才能最快投入生产

高质量代码才能最快投入生产

无法使用应用实例方法在 NestJS 中启用 CORS

在 Node 框架 NestJS-6.3.1 中面对 CORS

nestjs 是不是支持 graphql 片段?