リクエストを転送するだけの node-http-proxy をセットアップしようとしています。最終的に、このプロキシは、ブラウザからアクセスするすべての Web サイトに JavaScript を挿入する必要があります。
現在、ほとんどのページは転送され、正しく表示されていますが、posterkoenig.chや verkehrsclub.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...");
});