节点HTTP代理:根据响应

时间:2017-09-15 03:24:43

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

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

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

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

所以客户收到www.backup.com的回复。

1 个答案:

答案 0 :(得分: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,但我们无法更改响应本身。

要实现该要求,您需要自己编写代理逻辑,或使用支持共振拦截的其他代理模块。