为避免同域AJAX问题,我希望我的node.js Web服务器转发来自URL的所有请求 /api/BLABLA
到另一个服务器,例如other_domain.com:3000/BLABLA
,并透明地将与该远程服务器返回的相同的内容返回给用户。
所有其他网址(旁边 /api/*
)均应直接提供,不能进行代理。
如何使用node.js + express.js实现此目的?您可以举一个简单的代码示例吗?
(Web服务器和远程3000
服务器都在我的控制之下,都运行带有express.js的node.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服务器(或最终用户),因此没有运气。