检查请求是否处于重定向状态

时间:2015-08-20 20:14:20

标签: node.js http http-proxy node-http-proxy

有一种方法可以快速检查请求是否处于状态重定向(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

2 个答案:

答案 0 :(得分:0)

也许我不理解这个问题,但您可以轻松地执行以下操作:

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

fixUrl()location响应标头进行必要的转换。

答案 1 :(得分:0)

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

或者,您也可以设置处理30x重定向的代理选项。将autoRewrite设置为true或显式声明hostRewrite和protocolRewrite中的位置应该可以解决问题。 https://github.com/nodejitsu/node-http-proxy#options