在请求结束时,我想了解text/html
end inject </body>
标记的结果。理想情况下,这将尽可能低 - 即HTTP模块或最差连接。
我正在尝试创建一个用于调试的软件包,并且在启用调试时,我希望注入脚本。让它尽可能低只是意味着我正在处理的包尽可能兼容。
答案 0 :(得分:2)
一种方法可能是修补ServerResponse.end,如下所示:
var http = require('http');
var oldEnd = http.ServerResponse.prototype.end,
RE_CONTYPE_HTML = /Content-Type: text\/html/i;
http.ServerResponse.prototype.end = function(data, encoding) {
if (RE_CONTYPE_HTML.test(this._header)) {
if (data)
this.write(data, encoding);
this.write('<script>window.onload = function(){ alert("Hello World!"); };</script>', 'ascii');
oldEnd.call(this);
} else
oldEnd.call(this, data, encoding);
};
http.createServer(function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<h1>Greetings from node.js!</h1>');
}).listen(8000);