Переписывание метода ответа write мне показалось, что он работает с Express 4. Это позволяет изменять тело ответа, даже если он является потоком.
app.use(function (req, res, next) {
var write = res.write;
res.write = function (chunk) {
if (~res.getHeader('Content-Type').indexOf('text/html')) {
chunk instanceof Buffer && (chunk = chunk.toString());
chunk = chunk.replace(/(<\/body>)/, "<script>alert('hi')</script>\n\n$1");
res.setHeader('Content-Length', chunk.length);
}
write.apply(this, arguments);
};
next();
});
Просто зарегистрируйте этопромежуточное ПО перед любым другим промежуточным ПО, которое может изменять ответ.