Проверьте, находится ли запрос в состоянии перенаправления

Есть способ с экспресс-проверкой, если запрос находится в статусе перенаправления (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));
});

https://github.com/nodejitsu/node-http-proxy


person John Jerrby    schedule 20.08.2015    source источник
comment
Не могли бы вы уточнить, а) какой запрос вы хотите проверить на 302 (proxyReq или req?), и б) где в приведенном выше коде это должно произойти?   -  person Lars Gendner    schedule 27.08.2015


Ответы (2)


Может быть, я не понимаю вопроса, но вы можете легко сделать следующее:

proxy.on('proxyRes', function(proxyRes, req, res) {     
    if (proxyRes.statusCode === 301 || proxyRes.statusCode === 302) {
        proxyRes.headers['location'] = fixUrl(proxyRes.headers['location']);
    }
});

Где fixUrl() выполняет любое необходимое преобразование в заголовке ответа location.

person keithmo    schedule 28.08.2015

Вы можете прослушивать событие proxyRes и проверять его код состояния (код состояния для перенаправления — 30x). ProxyRes — это необработанный ответ от вашей цели, поэтому вы должны иметь возможность перехватывать и изменять заголовки ответов до того, как прокси-сервер отправит этот ответ клиенту.

Кроме того, вы также можете установить параметры прокси, которые обрабатывают 30-кратные перенаправления. Либо установка для autoRewrite значения true, либо явное указание местоположения в hostRewrite и protocolRewrite должны помочь. https://github.com/nodejitsu/node-http-proxy#options

person dekauliya    schedule 03.03.2016