2

我已经通过 Github Issues 向 csurf (Douglas Wilson) 的作者提出了这个问题,他建议在 stackoverflow 上创建一个新帖子。

原始问题在这里:https ://github.com/expressjs/csurf/issues/161

我的情况是:我在 express 中有一些 api(发布、放置、获取和删除)也带有路径参数。一些例子:删除 /api/users/2376213786213 POST /api/users 。(有身体)等等

我想使用 csurf,但我也想捕捉有人调用带有空路径参数的 api 并返回 404。简而言之,如果你调用 DELETE /api/users/(使用空 id 作为路径参数)我想要返回 404,否则如果您调用 DELETE /api/users/12121 我想处理 csrf 令牌,如果无效则返回 403。可能吗?如何?

我创建了一个中间件来处理 csrf,就像在官方 csurf 的示例中一样:

// error handler
app.use(function (err, req, res, next) {
  if (err.code !== 'EBADCSRFTOKEN') return next(err)

  // handle CSRF token errors here
  res.status(403)
  res.send('form tampered with')
})

在这个中间件之后,我创建了另一个来处理 404,没什么特别的。

但是,此 api DELETE /api/users/(以空 id 作为路径参数)被第一个中间件捕获并返回 403,而不是 404。

我怎样才能解决这个问题?

谢谢你。

4

0 回答 0