我的Express服务器上有多个中间件。我想为所有res.render
设置相同的自定义标头。但是,我不希望它们与res.send
一起发送。
我发现了answer。但是,执行此操作会将标头设置为服务器发送的所有响应,包括res.render
和res.send
。
有没有办法影响所有res.render
而不影响res.send
s?
谢谢!
答案 0 :(得分:1)
另一种方法是覆盖顶级中间件中的res.render
方法,并在调用时设置所需的标头并调用原始render
方法,如下所示:
// top middleware
app.use(function overrideRender(req, res, next) {
const originalRender = res.render;
res.render = function customRender() {
// set your headers here
originalRender.apply(res, arguments);
};
next();
});
答案 1 :(得分:1)
app.use()方法可以接受一个端点数组作为参数。您可以将所有路由(包含res.render
方法)分组到一个数组中,并在用户到达其中一个时调用指定的中间件:
var routes = [
'/route/1/',
'/route/2/',
'/route/3/',
];
app.use( routes, function (req, res, next) {
res.setHeader('header' , 'value' );
next();
});