Хотя я бы точно написал @ LaurentPerrin ответ, для полноты я должен сказать следующее:
Недостатком этого метода является то, что заголовки запроса, которые вы отправляете на somewhere.com
, не связаны с запросить заголовки вашего сервера. Например: если запрос, отправленный вам, имеет определенное значение для Accept-Language
, вполне вероятно, что (поскольку код стоит), вы не укажете одно и то же значение для Accept-Value
при проксировании с somewhere.com
. Таким образом, ресурс может быть возвращен вам (а затем от вас к исходному реквестеру) на неправильном языке.
Или если запрос к вам приходит с Accept-Encoding: gzip
, текущий код получит большой файл несжатый , и будет передавать его обратно без сжатия, когда вы могли бы сохранить пропускную способность и время, приняв и передав обратно сжатый файл.
Это может быть или не быть актуальным для вы.
Если есть важные заголовки, которые вы чувствуете, вам нужно пройти, вы можете либо добавить код, чтобы явно скопировать их из вашего запроса на запрос, который вы отправляете somewhere.com
, а затем скопировать соответствующие заголовки ответов назад, или используйте node-http-proxy
в https://github.com/nodejitsu/node-http-proxy .
Пример для пересылки прокси с помощью node-http proxy https://github.com/nodejitsu/node-http-proxy/blob/master/examples/http/forward-proxy.js
Установите запрос , затем:
var http = require('http'),
request = require('request'),
remote = 'http://somewhere.com';
http.createServer(function (req, res) {
// http://somewhere.com/noo.bin
var remoteUrl = remote + req.url;
request(remoteUrl).pipe(res);
}).listen(8080);