使用 NestJS 在 OPTIONS 上找不到 404

Getting 404 Not Found on OPTIONS with NestJS

我是 NestJS 的新手,在我的网络应用程序尝试查询的每条路线上,它都在 OPTIONS 请求上失败,得到:

{"statusCode":404,"error":"Not Found","message":"Cannot OPTIONS /authenticate"}

但是尝试直接 GET 或 POST 请求工作正常。

经过一些研究,我意识到我只需要 enable CORS (Access-Control-Allow-Origin),我可以通过编辑我的 main.ts 并传递 cors: trueNestFactory.create 选项(第二个参数)。

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule, { cors: true });
  await app.listen(3000);
}
bootstrap();

关于 CORS 的一些额外信息,如果您通过以下方式启用它:

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule, { cors: true });
  await app.listen(3000);
}
bootstrap();

这将允许来自任何域的跨域请求。这通常不是安全最佳实践。

如果你想让 CORS 拦截你的预检请求,但也只允许来自服务器内部的原始请求,你可以使用这个配置:

.....
  const app = await NestFactory.create(ApplicationModule, {cors: {
    origin: true,
    preflightContinue: false,
  }});
.....

还有人在寻找答案

app.enableCors();