使用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个参数,而您的代码只能假设有两个参数。