2015-08-20 20 views
3

有一种快速检查方式,如果请求处于状态重定向(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

+1

请您澄清一下a)您要检查302('proxyReq'或'req'?)的哪个请求,以及b)上述代码中应该发生的位置? –

回答

0

也许我不明白的问题,但你可以很容易地做到以下几点:

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

fixUrl()没有任何必要对location响应头变换。

0

您可以侦听proxyRes事件并检查其状态码(重定向的状态码是30x)。 ProxyRes是来自目标的原始响应,所以您应该能够在代理将此响应发送到客户端之前捕获并修改响应标头。

或者,您还可以设置处理30x重定向的代理选项。要么将autoRewrite设置为true,要么在hostRewrite中明确声明位置,protocolRewrite应该执行该操作。 https://github.com/nodejitsu/node-http-proxy#options

相关问题