0

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

IE

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

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

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

4

1 回答 1

3

经过一番调查,我发现使用 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事件并知道响应状态是404or 500,但我们无法改变响应本身。

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

于 2017-09-15T07:08:04.643 回答