Um AJAX-Probleme mit derselben Domäne zu vermeiden, möchte ich, dass mein node.js-Webserver beispielsweise alle Anforderungen von der URL /api/BLABLA
an einen anderen Server weiterleitet other_domain.com:3000/BLABLA
und dem Benutzer das gleiche zurückgibt, das dieser Remote-Server transparent zurückgegeben hat.
Alle anderen URLs (neben /api/*
) sollen direkt ohne Proxy bereitgestellt werden.
Wie erreiche ich das mit node.js + express.js? Können Sie ein einfaches Codebeispiel geben?
(Sowohl der Webserver als auch der Remote- 3000
Server stehen unter meiner Kontrolle. Beide führen node.js mit express.js aus.)
Bisher habe ich diese https://github.com/http-party/node-http-proxy gefunden , aber das Lesen der Dokumentation dort hat mich nicht klüger gemacht. Ich endete mit
var proxy = new httpProxy.RoutingProxy();
app.all("/api/*", function(req, res) {
console.log("old request url " + req.url)
req.url = '/' + req.url.split('/').slice(2).join('/'); // remove the '/api' part
console.log("new request url " + req.url)
proxy.proxyRequest(req, res, {
host: "other_domain.com",
port: 3000
});
});
Es wird jedoch nichts an den ursprünglichen Webserver (oder an den Endbenutzer) zurückgegeben, also kein Glück.