使用node-http-proxy访问响应头

我正在尝试使用node-http-proxy创build的代理来修改响应。 但是我无法访问响应头。 我想访问响应头,因为我想修改JavaScript文件并将修改的JavaScript文件发送到客户端。

这是我的代码:

var httpProxy = require('http-proxy'); var url = require('url'); var i = 0; httpProxy.createServer(function(req, res, next) { var oldwriteHead = res.writeHead; res.writeHead = function(code, headers) { oldwriteHead.call(res, code, headers); console.log(headers); //this is undefined }; next(); }, function(req, res, proxy) { var urlObj = url.parse(req.url); req.headers.host = urlObj.host; req.url = urlObj.path; proxy.proxyRequest(req, res, { host: urlObj.host, port: 80, enable: {xforward: true} }); }).listen(9000, function() { console.log("Waiting for requests..."); }); 

writeHead()不一定要用一个头数组来调用, write()也可以在必要时发送头。

如果你想访问标题(或设置它们),你可以使用这个:

 res.writeHead = function() { // To set: this.setHeader('your-header', 'your-header-value'); // To read: console.log('Content-type:', this.getHeader('content-type')); // Call the original method !!! see text oldwriteHead.apply(this, arguments); }; 

我使用apply()将所有parameter passing给旧方法,因为writeHead()实际上可以有3个参数,而您的代码只能假设有两个参数。