首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cors中间件与自定义中间件的使用

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

Stack Overflow用户
提问于 2022-06-25 07:07:47
回答 2查看 52关注 0票数 0

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

我无意中调用了一个auth中间件,在它之后添加了括号,它运行了该中间件,甚至连我都没有向该路由请求。

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

来自docs的cors中间件的使用:

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

使用带有()的auth中间件的给出错误:

代码语言:javascript
复制
app.get('/products/:id', auth(), function (req, res, next) {
  res.json({msg: 'This is an authorized Route'})
})

不带()的auth中间件的使用很好:

代码语言:javascript
复制
app.get('/products/:id', auth, function (req, res, next) {
  res.json({msg: 'This is an authorized Route'})
})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-25 07:20:13

函数可以是返回其他函数,当您使用cors()调用cors函数时,您会得到一个新功能,它在app.get()中用作中间件函数。您的cors()示例可以重写如下:

代码语言:javascript
复制
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()时得到的返回值。

票数 1
EN

Stack Overflow用户

发布于 2022-06-25 07:22:58

cors模块返回接受可选配置并返回中间件的函数。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72751919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档