我刚开始使用nodejs,到目前为止我非常喜欢它。但是,我有一些小问题,使它成为一个中间人服务器/客户端。
为了澄清,我正在尝试在客户端使用nodejs,它将是服务器和客户端浏览器之间的中间人。本质上,nodejs似乎是客户端的服务器,看起来像服务器前面的客户端。 所以,我让它在localhost上侦听端口8080,并且nodejs正在获取所有传入的请求。
我的问题是,如何让nodejs在客户端浏览器中呈现之前分析请求?非常感谢任何想法/链接/帮助。
以下是我的简单代码:
var request = require('request'),
http = require('http');
// var url = require('url');
// URL.parse(string);
var server = http.createServer(function (req, res) {
var dest = req.url.substr(1, req.url.length - 1);
//console.log(dest);
request.get({uri: dest}, function (err, response, html) {
console.log(html);
console.log(response);
res.end(html);
});
console.log('fetched from ' + req.url);
});
server.listen(3000);
答案 0 :(得分:1)
所以,你真正需要的是一个 http代理 ...你看过node-http-proxy吗?它允许您自定义行为,但提供所有必需的功能,包括对WebSockets的支持。
答案 1 :(得分:1)
@alienhard是正确的,你基本上想要一个反向代理,但我不会像他建议的那样快速找到一个库。使用node非常容易。
var http = require("http")
var util = require("util")
http.createServer(function(req, rsp){
var options = {
host: 'www.google.com',
port: 80,
path: req.url,
method: req.method,
headers: req.headers
}
proxy = http.request(options, function(response){
rsp.writeHead(response.statusCode, response.headers)
console.log(response.statusCode)
console.log(response.headers)
response.on("data", function(chunk){
console.log(chunk.toString());
rsp.write(chunk)
})
response.on("end", function(){ rsp.end() })
})
proxy.once("error", function(){ })
util.pump(req, proxy)
req.on('end', function () { proxy.end() })
}).listen(3000)