我刚接触NestJS,但在查询每个路由时,它都会在OPTIONS请求上失败,出现以下错误:
{"statusCode":404,"error":"Not Found","message":"Cannot OPTIONS /authenticate"}
但是,直接尝试GET或POST请求却可以正常工作。
我刚接触NestJS,但在查询每个路由时,它都会在OPTIONS请求上失败,出现以下错误:
{"statusCode":404,"error":"Not Found","message":"Cannot OPTIONS /authenticate"}
但是,直接尝试GET或POST请求却可以正常工作。
经过一些调查研究,我意识到我只需要启用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();
关于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();