Aby uniknąć problemów z AJAX tej samej domeny, chcę, aby mój serwer sieciowy node.js przekazywał na przykład wszystkie żądania z adresu URL /api/BLABLA
do innego serwera i w sposób przezroczysty zwracał other_domain.com:3000/BLABLA
użytkownikowi to samo, co ten zdalny serwer.
Wszystkie inne adresy URL (obok /api/*
) mają być obsługiwane bezpośrednio, bez proxy.
Jak to osiągnąć za pomocą node.js + express.js? Czy możesz podać prosty przykład kodu?
(zarówno serwer WWW, jak i serwer zdalny 3000
są pod moją kontrolą, oba działają na node.js z express.js)
Do tej pory znalazłem to https://github.com/http-party/node-http-proxy , ale przeczytanie tamtej dokumentacji nie uczyniło mnie mądrzejszym. Skończyło się
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
});
});
ale nic nie jest zwracane na oryginalny serwer sieciowy (ani do użytkownika końcowego), więc nie ma szczęścia.