Это потому, что обратный вызов next
Это вызывается событием после того, как вы res.redirect
// Protect file
app.use(function(req, res, next) {
if (req.user == null && req.path === '/File.json') {
res.redirect('/');
}
next();
});
Как вы можете видеть, ничто не препятствует выполнению обратного вызова next
. чтобы избежать этого, вы можете обернуть его внутри оператора if... else ...
или добавить return
перед res.redirect
.
Это означает, что даже если это условие req.user == null && req.path === '/File.json'
выполнено. выполняется выполнение всего блока внутри оператора IF
, а также блока, находящегося за пределами оператора IF
. Таким образом, будет выполнен обратный вызов next
, который вызовет следующее промежуточное ПО в стеке, которым является express.static
, и, кстати, это промежуточное ПО попытается отобразить File.json
, который сбрасывает заголовок после выполнения перенаправления.