用express.js代理

为了避免同域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服务器(或最终用户),因此没有运气。