Проверьте, находится ли запрос в состоянии перенаправления
Есть способ с экспресс-проверкой, если запрос находится в состоянии перенаправления (302), я использую ( req,res), я использую следующее?
var http = require('http'),
httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({});
proxy.on('proxyReq', function(proxyReq, req, res, options) {
proxyReq.setHeader('X-Special-Proxy-Header', 'foobar');
});
proxy.on('proxyRes', function (proxyRes, req, res) {
console.log('RAW Response from the target', JSON.stringify(proxyRes.headers, true, 2));
});
2 ответа
Может быть, я не понимаю вопроса, но вы можете легко сделать следующее:
proxy.on('proxyRes', function(proxyRes, req, res) {
if (proxyRes.statusCode === 301 || proxyRes.statusCode === 302) {
proxyRes.headers['location'] = fixUrl(proxyRes.headers['location']);
}
});
куда fixUrl()
делает любое необходимое преобразование на location
заголовок ответа.
Вы можете прослушать событие proxyRes и проверить его код состояния (код состояния для перенаправления - 30x). ProxyRes - это необработанный ответ от вашей цели, поэтому вы должны быть в состоянии перехватить и изменить заголовки ответа, прежде чем прокси отправит этот ответ клиенту.
Кроме того, вы также можете установить параметры прокси, которые обрабатывают 30-кратные перенаправления. Либо установив autoRewrite в true, либо явным образом указав расположение в hostRewrite, и protocolRewrite добьется цели. https://github.com/nodejitsu/node-http-proxy