Pour éviter les problèmes AJAX de même domaine, je veux que mon serveur Web node.js transfère toutes les demandes de l'URL /api/BLABLA
vers un autre serveur, par exemple other_domain.com:3000/BLABLA
, et renvoie à l'utilisateur la même chose que ce serveur distant a renvoyé, de manière transparente.
Toutes les autres URL (à côté /api/*
) doivent être servies directement, pas de proxy.
Comment puis-je y parvenir avec node.js + express.js? Pouvez-vous donner un exemple de code simple?
(le serveur Web et le 3000
serveur distant sont sous mon contrôle, tous deux exécutant node.js avec express.js)
Jusqu'à présent, j'ai trouvé cela https://github.com/http-party/node-http-proxy , mais la lecture de la documentation ne m'a pas rendu plus sage. J'ai fini avec
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
});
});
mais rien n'est retourné au serveur Web d'origine (ou à l'utilisateur final), donc pas de chance.