Я уже задавал этот вопрос автору csurf (Дуглас Уилсон) через Github Issues, и он предложил создать новый пост на stackoverflow.
Оригинальный вопрос здесь: https://github.com/expressjs/csurf/issues/161
Моя ситуация такова: у меня есть несколько apis в экспрессе (post, put, get и delete) также с параметрами пути.Некоторые примеры: DELETE / api / users / 2376213786213 POST / api / users.(с телом) и так далее
Я хочу использовать csurf, но я также хочу отлавливать, когда кто-то вызывает API с пустым параметром пути и возвращает 404. Короче говоря, если вы вызываете DELETE / api/ users / (с пустым идентификатором в качестве параметра пути) Я хочу вернуть 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 / (с пустым идентификатором в качестве параметра пути) перехватывается первым промежуточным ПО и возвращает 403 вместо 404.
Как я могу это исправить?
Спасибо.