为了避免客户端 javascript 代码的典型 CORS 问题,我使用了 nodejs express 服务器。该服务器包含以下代码:
var app = express();
app.all('/Api/*', function (req, res) {
proxy.web(req, res, {
target: 'https://www.myserver.com',
changeOrigin:true
});
});
所以它所做的是将任何以 /Api
开头的调用重定向到我的服务器。
但是,这也会将 Api
附加到 url 路径,因此 Api/getData
变为 https://www.myserver.com/Api/getData
有没有办法去掉相对 url 的 Api
部分?最终结果将是 Api/getData
变成 https://www.myserver.com/getData
这将允许我通过更改相对 URL 路径的第一部分来定位多个服务器。像这样:
Api/getData
-> https://www.myserver.com/getData
OtherApi/getData/for/some/path
-> https://www.some-other-server.com/getData/for/some/path
这当然适用于所有请求类型,而不仅仅是 GET
谢谢!
最佳答案
看看 http-proxy-rules模块,它是 node-http-proxy 的配套模块。它允许您编写将匹配路由更改为不同代理路由的规则。
有了它,您应该能够像这样定义您的翻译:
var proxyRules = new HttpProxyRules({
rules: {
'.*/Api': 'http://myserver.com/', // Rule (1)
'.*/OtherApi*': 'http://some-other-server.com:8080/' // Rule (2)
},
default: 'http://myserver.com/' // default target
});
然后像这样使用它们:
app.all('*', function(req, res) {
var target = proxyRules.match(req);
if (target) {
return proxy.web(req, res, {
target: target
});
}
})
关于javascript - 使用 Express 代理,如何更改相对 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35155861/