Pour éviter les problèmes de AJAX avec le même domaine, je veux que mon serveur web node.js redirige 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 que ce serveur distant a renvoyé, de manière transparente.
Toutes les autres URLs (à l'exception de /api/*
) doivent être servies directement, sans proxy.
Comment puis-je réaliser cela avec node.js + express.js ? Pouvez-vous donner un exemple de code simplifié ?
(le serveur web et le serveur distant 3000
sont tous deux sous mon contrôle, tous deux exécutant node.js avec express.js)
Jusqu'à présent, j'ai trouvé ceci https://github.com/http-party/node-http-proxy , mais la lecture de la documentation là-bas 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 renvoyé au serveur web d'origine (ou à l'utilisateur final), donc pas de chance.
0 votes
La manière dont tu le fais fonctionne pour moi, sans aucune modification
1 votes
Bien que un peu trop tard pour répondre, mais j'ai rencontré le même problème et je l'ai résolu en supprimant le corps du parseur afin que le corps de la requête ne soit pas analysé avant d'être envoyé plus loin.