Para evitar problemas de AJAX no mesmo domínio, desejo que meu servidor da web node.js. encaminhe todas as solicitações da URL /api/BLABLA
para outro servidor, por exemplo other_domain.com:3000/BLABLA
, e retorne ao usuário a mesma coisa que esse servidor remoto retornou de forma transparente.
Todos os outros URLs (ao lado /api/*
) devem ser veiculados diretamente, sem proxy.
Como conseguir isso com o node.js + express.js? Você pode dar um exemplo de código simples?
(o servidor da Web e o 3000
servidor remoto estão sob meu controle, ambos executando o node.js com o express.js)
Até agora, encontrei este https://github.com/http-party/node-http-proxy , mas ler a documentação lá não me deixou mais sábio. Acabei com
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
});
});
mas nada é retornado ao servidor Web original (ou ao usuário final), portanto, não há sorte.