假设我有这样的中间件;
var express = require('express');
var app = express();
app.use(function (req, res, next) {
var host = "example.com";
if (req.host !== host) {
res.redirect(301, host + req.originalUrl);
res.end();
}
});
我需要遵守哪些规则?
res.end()
吗? (或res.redirect()
为我做这个吗?)next()
吗? (或连接检测请求已结束并干净地退出?)next()
,我想这意味着我可能会接收到我的中间件的请求,这些请求可能已被其他人终止中间件链中更高;我如何保护自己不受此事影响?答案 0 :(得分:21)
res.redirect()
确实调用res.end()
本身; next()
;在生成重定向的情况下, 是一个端点,不应该调用next()
,但如果req.host === host
,则需要调用next()
来移动链接到其他中间件/路由的请求;