【发布时间】:2014-03-07 08:01:27
【问题描述】:
我想允许 Express 中经过身份验证的客户端访问在服务器上运行但在不同端口上的其他 Web 应用程序。
例如,我在 http://myDomain 上运行 express,而在端口 9000 上运行另一个应用程序。我希望能够通过http://myDomain/proxy/9000 访问其他应用程序。
我使用node-http-proxy取得了一点成功,例如:
function(req, res) {
var stripped = req.url.split('/proxy')[1];
var path = stripped.split('/');
var port = path.shift();
var url = path.join('/');
req.url = url;
proxy.web(req, res, {
target: 'http://127.0.0.1:' + port
});
}
然而,最大的问题是当 web 应用程序发出 GET 请求时,例如 /js/lib.js,它解析为 http://myDomain/js/lib.js,这是有问题的,因为 express 不知道这些资产。正确的请求是http://myDomain/proxy/9000/js/lib.js。如何路由所有这些额外的请求?
【问题讨论】:
-
在您的示例中,/js/ 目录中的所有内容都应该进行身份验证吗?
-
除了更改代理之外,您是否可以更改其他应用程序以生成代理友好的 URL?
-
@Dan,/js/ 目录中的所有内容也应该经过身份验证。
-
@MattBakaitis,这是不可行的,因为我无法直接控制这些其他应用程序,我只想对用户进行身份验证并将他们引导到他们应该去的地方。
-
与其使用
/proxy/9000之类的东西,为什么不将所有到/js/*的请求路由到端口9000?
标签: javascript node.js express proxy node-http-proxy