Я намагаюся створити проксі-сервер для передачі HTTP GET
запитів від клієнта на сторонній веб-сайт (скажімо, google). Моєму проксі просто потрібно віддзеркалити вхідні запити до відповідного шляху на цільовому сайті, тому, якщо запитувана моїм клієнтом URL-адреса:
127.0.0.1/images/srpr/logo11w.png
Потрібно подати такий ресурс:
http://www.google.com/images/srpr/logo11w.png
Ось що я придумав:
http.createServer(onRequest).listen(80);
function onRequest (client_req, client_res) {
client_req.addListener("end", function() {
var options = {
hostname: 'www.google.com',
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
, порядок пов'язаних модулів від низької до високої абстракції:node
,http
,connect
,express
взяті з stackoverflow.com/questions/6040012 / ...