当代理的目标发出重定向(在这种情况下为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
};
我很感激帮助!
答案 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等不会被保留,你可能会失去一些功能我想,但至少,它是稳定的,就像在中你不会被重定向您的代理域名。