Per evitare problemi con lo stesso dominio AJAX, desidero che il mio server web node.js inoltri tutte le richieste dall'URL /api/BLABLA
a un altro server, ad esempio other_domain.com:3000/BLABLA
, e ritorni all'utente la stessa cosa che questo server remoto ha restituito, in modo trasparente.
Tutti gli altri URL (accanto /api/*
) devono essere offerti direttamente, senza proxy.
Come posso ottenere questo risultato con node.js + express.js? Puoi fare un semplice esempio di codice?
(sia il server Web che il 3000
server remoto sono sotto il mio controllo, entrambi eseguono node.js con express.js)
Finora ho trovato questo https://github.com/http-party/node-http-proxy , ma leggere la documentazione non mi ha reso più saggio. Ho finito con
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
});
});
ma nulla viene restituito al server Web originale (o all'utente finale), quindi nessuna fortuna.