Para evitar problemas de AJAX en el mismo dominio, quiero que mi servidor web node.js reenvíe todas las solicitudes de URL /api/BLABLA
a otro servidor, por ejemplo other_domain.com:3000/BLABLA
, y devuelva al usuario lo mismo que devolvió este servidor remoto, de forma transparente.
Todas las demás URL (al lado /api/*
) se deben servir directamente, sin proxy.
¿Cómo logro esto con node.js + express.js? ¿Puedes dar un ejemplo de código simple?
(tanto el servidor web como el 3000
servidor remoto están bajo mi control, ambos ejecutan node.js con express.js)
Hasta ahora encontré este https://github.com/http-party/node-http-proxy , pero leer la documentación allí no me hizo más sabio. Terminé 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
});
});
pero no se devuelve nada al servidor web original (o al usuario final), así que no tuvimos suerte.