同じドメインのAJAXの問題を回避するために、node.js WebサーバーがURL /api/BLABLA
からのすべてのリクエストを別のサーバーに転送しother_domain.com:3000/BLABLA
、このリモートサーバーが返したものと同じものを透過的にユーザーに返します。
他のすべてのURL(以外/api/*
)は、プロキシなしで直接提供されます。
node.js + express.jsでこれを実現するにはどうすればよいですか?簡単なコード例を教えてください。
(Webサーバーとリモート3000
サーバーの両方が私の制御下にあり、どちらもnode.jsとexpress.jsを実行しています)
これまでのところ、このhttps://github.com/http-party/node-http-proxyを見つけましたが、そこでドキュメントを読んでも、私には賢くなりませんでした。私はで終わった
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
});
});
しかし、元のWebサーバー(またはエンドユーザー)には何も返されないため、運がありません。