如何在node.js中创建一个简单的http代理?
[我正在尝试创建代理服务器,以将来自客户端的HTTP GET
请求传递给第三方网站(例如Google)。我的代理只需要将传入的请求镜像到目标站点上的相应路径,因此,如果我的客户请求的url为:
127.0.0.1/images/srpr/logo11w.png
应提供以下资源:
.png
这是我想出的:
http.createServer(onRequest).listen(80);
function onRequest (client_req, client_res) {
client_req.addListener("end", function() {
var options = {
hostname: 'www.google',
port: 80,
path: client_req.url,
method: client_req.method
headers: client_req.headers
};
var req=http.request(options, function(res) {
var body;
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function () {
client_res.writeHead(res.statusCode, res.headers);
client_res.end(body);
});
});
req.end();
});
}
它与html页面配合使用很好,但是对于其他类型的文件,它只返回空白页面或来自目标站点的错误消息(在不同站点中有所不同。)>
我正在尝试创建代理服务器,以将HTTP GET请求从客户端传递到第三方网站(例如Google)。我的代理只需将传入的请求镜像到......>
回答如下:我认为处理从第三方服务器收到的响应不是一个好主意。这只会增加代理服务器的内存占用量。此外,这就是您的代码无法正常工作的原因。
而不是尝试将响应传递给客户端。考虑以下代码段: