javascript - 使用 Express 代理,如何更改相对 url?

标签 javascript node.js express node-http-proxy

为了避免客户端 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/

相关文章:

javascript - 向这个 javascript 倒计时脚本添加前导零吗?

javascript - Node.js 更改应用程序以使用集群模块

html - 如何使用 express 发送带有 css 的 html 文件作为对连接客户端的响应

javascript - IG清除过滤器并设置新过滤器

javascript - 如何为事件回调传递特定数组元素

javascript - 如何使用 Jquery 发布对象数组?

javascript - 将 View 渲染到 Node.js 中的脚本标记时如何传递变量

node.js - React-router服务器端错误

javascript - Angularjs发布请求错误No 'Access-Control-Allow-Origin'

javascript - 使用 JSON 更改显示的数字或字符串?