【问题标题】:Node HTTP Proxy: Trying a different endpoint based on response节点 HTTP 代理:根据响应尝试不同的端点
【发布时间】:2017-09-15 03:24:43
【问题描述】:

简而言之,我们使用的是https://github.com/chimurai/http-proxy-middleware 如果初始代理端点返回 404 或 500,我们希望将请求引导到不同的端点。

->http://www.example.com(404)

->http://www.backup.com(200)

因此客户端收到来自 www.backup.com 的响应。

【问题讨论】:

    标签: node.js node-http-proxy http-proxy-middleware


    【解决方案1】:

    经过一番调查,我发现使用 http-proxy-middleware 将 HTTP 请求引导到另一个端点是不可能的。

    http-proxy-middleware 由node-http-proxy 提供支持,无法在 node-http-proxy 中实现该要求。相关代码如下:

    // node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js
    proxyReq.on('response', function(proxyRes) {
      if(server) { server.emit('proxyRes', proxyRes, req, res); }
      ...
      proxyRes.pipe(res);
    });
    

    一旦收到响应,就会发出一个事件proxyRes,并且该响应会立即通过管道传送到浏览器(res 对象)。

    虽然我们可以监听proxyRes 事件并且知道响应状态是404500,但我们无法更改响应本身。

    要实现这个需求,需要自己编写代理逻辑,或者使用其他支持resonse-interception的代理模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多