13

リクエストを転送するだけの node-http-proxy をセットアップしようとしています。最終的に、このプロキシは、ブラウザからアクセスするすべての Web サイトに JavaScript を挿入する必要があります。

現在、ほとんどのページは転送され、正しく表示されていますが、posterkoenig.chverkehrsclub.chなどの一部のページでは、空白のページが返されるか、ページにエラーがあります。どちらのサイトも、プロキシを配置しなくても問題なく動作します。何を変更する必要がありますか、または正しく転送されないために欠けているものは何ですか?

私はnodejsに非常に慣れていないため、私のアプローチが機能するかどうかは完全にはわかりません。

これが私がこれまでに得たものです:

var httpProxy = require('http-proxy');
var url = require('url');

httpProxy.createServer(function(req, res, proxy) {

  var urlObj = url.parse(req.url);

  proxy.proxyRequest(req, res, {
    host: urlObj.host,
    port: 80,
    changeOrigin: true,
    enable : { xforward: true }
  });
}).listen(9000, function () {
  console.log("Waiting for requests...");
});

アップデート

@robertklepが示唆したように、削除changeOriginして再定義しreq.headers.host、さらにreq.headers.url

posterkoenig.ch :

スローするようになりました:

An error has occurred: 
{"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getaddrinfo"}

verkehrsclub.ch :

フロントページは機能するようになりましたが、サブページは依然としてページ上でエラーをスローします。

var httpProxy = require('http-proxy');
var url = require('url');

httpProxy.createServer(function(req, res, proxy) {

  var urlObj = url.parse(req.url);

  req.headers['host'] = urlObj.host;
  req.headers['url'] = urlObj.href;

  proxy.proxyRequest(req, res, {
    host: urlObj.host,
    port: 80,
    enable : { xforward: true }
  });
}).listen(9000, function () {
  console.log("Waiting for requests...");
});
4

1 に答える 1