首页 > 解决方案 > NestJS CORS 不起作用 - 我该怎么办?

问题描述

无论我如何尝试在我的 NestJS 应用程序中激活 CORS,我都无法让它运行。我尝试了几乎所有在互联网上可以找到的可能性。为什么在这么多项目中这是一个问题?是什么导致了这个问题?

我试过:

const app = await NestFactory.create(AppModule, {cors: true});

app.enableCors();

app.use(cors());

const options: any = {cors: '*'} // cors: true // cors: ['http://localhost:4200'] // ...
app.enableCors(options);

app.use(cors(options));

@Header('Access-Control-Allow-Origin', 'http://localhost:4200') // on a specific method

...

我总是收到错误“No Access-Control-Allow-Origin”标头存在于请求的资源中。 错误截图

对于这方面的任何帮助,我将不胜感激。

标签: corsnestjs

解决方案


你怎么知道它不起作用?

我最近在运行 v7.2.0 的 NestJS 项目中有类似的东西。

  const app = await NestFactory.create(AppModule)
 
  // ... 

  if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {
    app.enableCors()
  } else {
    app.enableCors({
      origin: config.get('server.origin'),
      // methods: 'GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS',
      // credentials: false,
      // ...
    })
    logger.log(`Accepting requests from origin "${config.get('server.origin')}"`)
  }

这在文档中有所介绍:https ://docs.nestjs.com/techniques/security

除此之外,我会确保您在控制器中正确使用 Nest。如果您正在做任何事情来处理响应或更改标题,那么您可能会踩到某些东西?


推荐阅读