使用NestJS时,在OPTIONS请求中遇到404 Not Found错误

18

我刚接触NestJS,但在查询每个路由时,它都会在OPTIONS请求上失败,出现以下错误:

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

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

3个回答

24

经过一些调查研究,我意识到我只需要启用CORS(Access-Control-Allow-Origin),我可以通过编辑我的main.ts文件,并将cors:true传递给NestFactory.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();

2
CORS是一项内置功能,有关详细信息请参见此处:https://docs.nestjs.com/techniques/cors :) - Kamil Myśliwiec
3
@KamilMyśliwiec,这对我仍然无效。app.enableCors()也是如此。所有HTTP OPTIONS请求都会因404而失败。不确定出了什么问题。 - chaostheory
@KamilMyśliwiec, nestjs文档站点的CORS文档在哪里?现在似乎出现了重定向。 - Chris Cooley

10

关于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,
  }});
.....

2

如果你还在寻找答案

app.enableCors();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接