【发布时间】:2019-08-15 20:16:18
【问题描述】:
发送OPTIONS请求时,不会触发中间件。
export class AppModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(CorsMiddleware).forRoutes({
path: "*",
method: RequestMethod.OPTIONS
});
}
}
如果我将RequestMethod.OPTIONS 更改为RequestMethod.ALL,它将在所有请求上触发,OPTIONS 除外。
这是设计使然吗?如果是这样,当我们想专门为OPTIONS 请求触发中间件时,我们如何解决它。
示例中间件:
@Injectable()
export class CorsMiddleware implements NestMiddleware {
resolve(...args: any[]): MiddlewareFunction {
return (req, res, next) => {
console.log("testing ????", req.method);
next && next();
};
}
}
【问题讨论】:
-
如果你有一个最小的 repo 来重现它,我认为这可能更适合作为一个问题。 github.com/nestjs/nest/issues
-
是否有其他中间件已经处于活动状态,可以拦截 OPTIONS ?
-
事实上,似乎根本无法在 Nestjs 中处理预检请求
-
我们使用拦截器处理 CORS 没有问题。
-
@KarolSamborski 你能提供你的拦截器的例子吗?你使用的是哪个 Nestjs 版本?
标签: typescript nestjs