【问题标题】:Node HTTP Proxy: Trying a different endpoint based on response节点 HTTP 代理:根据响应尝试不同的端点
【发布时间】:2017-09-15 03:24:43
【问题描述】:
【问题讨论】:
标签:
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 事件并且知道响应状态是404 或500,但我们无法更改响应本身。
要实现这个需求,需要自己编写代理逻辑,或者使用其他支持resonse-interception的代理模块。