如何使用node-http-proxy抑制来自目标的301重定向?

时间:2016-04-11 19:21:06

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

当代理的目标发出重定向(在这种情况下为301)时,代理会将其转发给客户端。然后,客户端将重定向到实际域,不再使用代理。有没有办法阻止这种重定向影响客户端?我希望代理遵循重定向,但我不希望客户端在执行此重定向时离开代理。

示例案例:

假设我在fake-proxy.example上运行了代理。将目标设置为服务器IP,然后将主机设置为该服务器上的域时,代理会尝试通过http进行连接。该域已设置为将http流量重定向到https,并使用https向同一域发出301重定向。此重定向将发送回客户端,客户端将离开fake-proxy.example并转到实际域(出于此问题,我们将其称为real-domain.example)。我的配置:

var options = {
    target: {
        host: '1.1.1.1'
    },
    headers: {
        host: 'real-domain.example'
    },
    autoRewrite: false,
    hostRewrite: false,
    protocalRewrite: false
};

我很感激帮助!

1 个答案:

答案 0 :(得分:0)

这有点晚了,但是像下面这样的解决方案可以帮助那些偶然发现这个帖子的人:

var http = require('http');
var url = require('url');
var request = require('request');

var host = 'http://real-domain.example';

http.createServer(onRequest).listen(3080);

function onRequest(req, res) {
    var url_parts = url.parse(req.url);
    request({
        url: host + url_parts.pathname
    }).on('error', function(e) {
        res.end(e);
    }).pipe(res);
}

当然,Cookie等不会被保留,你可能会失去一些功能我想,但至少,它是稳定的,就像在中你不会被重定向您的代理域名