cors中间件与自定义中间件的使用



请原谅我这个愚蠢的问题,但是有人能解释一下cors中间件是如何工作的吗?

我不小心调用了一个auth中间件,在它后面加了括号,它运行了那个中间件,甚至没有我请求那个路由。

我知道在函数之后添加括号调用它,但它是什么与cors中间件,我们在它之后添加这些括号??

cors中间件使用from docs:

app.get('/products/:id', cors(), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})

使用auth middleware with()给出错误:

app.get('/products/:id', auth(), function (req, res, next) {
res.json({msg: 'This is an authorized Route'})
})

使用不带()的认证中间件工作正常:

app.get('/products/:id', auth, function (req, res, next) {
res.json({msg: 'This is an authorized Route'})
})

函数可以返回其他函数,当您使用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()时。

cors模块返回一个函数,该函数接受可选配置并返回中间件。

auth已经是中间件,而不是函数,所以不需要调用它。

相关内容

  • 没有找到相关文章

最新更新