请原谅我提出这个愚蠢的问题,但是有人能解释一下cors中间件是如何工作的吗?
我无意中调用了一个auth中间件,在它之后添加了括号,它运行了该中间件,甚至连我都没有向该路由请求。
我知道在函数之后添加括号会调用它,但是在cors中间件之后添加这些括号是什么呢?
来自docs的cors中间件的使用:
app.get('/products/:id', cors(), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})使用带有()的auth中间件的给出错误:
app.get('/products/:id', auth(), function (req, res, next) {
res.json({msg: 'This is an authorized Route'})
})不带()的auth中间件的使用很好:
app.get('/products/:id', auth, function (req, res, next) {
res.json({msg: 'This is an authorized Route'})
})发布于 2022-06-25 07:20:13
函数可以是返回其他函数,当您使用cors()调用cors函数时,您会得到一个新功能,它在app.get()中用作中间件函数。您的cors()示例可以重写如下:
const corsMiddlewareFn = cors();
app.get('/products/:id', corsMiddlewareFn, function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})上面,我们将调用cors()返回的函数存储在一个名为corsMiddlewareFn的变量中,然后将其用作中间件,作为调用app.get()的一部分。让cors()返回一个函数非常有用,因为它允许我们将选项传递给cors()函数,这样它返回的中间件函数就可以相应地使用这些选项。
另一方面,您的auth函数很可能不返回函数,因此auth本身是您想要使用的中间件函数,而不是调用auth()时得到的返回值。
发布于 2022-06-25 07:22:58
cors模块返回接受可选配置并返回中间件的函数。
auth已经是中间件,而不是函数,因此不需要调用它。
https://stackoverflow.com/questions/72751919
复制相似问题