После некоторого расследования я обнаружил, что невозможно передать HTTP-запрос на другую конечную точку, используя http-proxy-middleware.
http-proxy-middleware работает на https://github.com/nodejitsu/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
, мы ничего не можем сделать, чтобы изменить сам ответ.
Чтобы реализовать это требование, вам нужно написать логику прокси самостоятельно или использовать какой-либо другой модуль прокси, который поддерживает перехват резонанса.
person
shaochuancs
schedule
15.09.2017