2013-03-05 195 views
4

我使用node-http-proxy模块在node.js中创建了一个代理服务器。从代理服务器获取响应

是这样的:

var http = require('http'), 
httpProxy = require('http-proxy'), 
io = require("socket.io").listen(5555); 

var proxy = new httpProxy.RoutingProxy(); 

http.createServer(function (req, res) { 
    proxy.proxyRequest(req, res, { 
     host: 'localhost', 
     port: 1338 
    }); 
}).listen(9000); 

所以,我需要,发送响应返回给客户端从服务器,我代理让身体和分析它。

但我无法找到事件或属性,我可以获取这些数据。我尝试过:

proxy.on('end', function (data) { 
    console.log('end'); 
}); 

但我无法弄清楚我们如何从中获取MIME身体。

回答

4

我找到答案: 我重写响应函数体 -

var http = require('http'), 
    httpProxy = require('http-proxy'), 
    io = require("socket.io").listen(5555); 

var proxy = new httpProxy.RoutingProxy(); 

http.createServer(function (req, res) { 
    console.log(req.url); 
    res.oldWrite = res.write; 
    res.write = function(data) { 
     /* add logic for your data here */ 
     console.log(data.toString('UTF8')); 
     res.oldWrite(data); 
    } 

    proxy.proxyRequest(req, res, { 
     host: 'localhost', 
     port: 1338 
    }); 

}).listen(9000); 

此代码将控制台中的所有URL请求和响应形成该端点。

4

如果你想要做的是检查响应(只读),您可以使用:

proxy.on('proxyRes', function(proxyRes, req, res){ 

    proxyRes.on('data' , function(dataBuffer){ 
     var data = dataBuffer.toString('utf8'); 
     console.log("This is the data from target server : "+ data); 
    }); 

}); 

但是,请注意,在发送响应后,“proxyRes”事件被发射。

参考: https://github.com/nodejitsu/node-http-proxy/issues/382

+0

这救了我的命......在https://www.npmjs.com/package/http-proxy实际机制的文档是非常差 – 2017-09-08 07:32:36