Javascript 如何使用节点http代理抑制来自目标的301重定向?
当代理的目标发出重定向(在本例中为301)时,代理将该重定向转发给客户端。然后客户端被重定向到实际域,不再使用代理。有没有办法防止此重定向影响客户端?我希望代理遵循重定向,但我不希望客户端在遵循此重定向时离开代理 示例案例: 假设我有一个代理在Javascript 如何使用节点http代理抑制来自目标的301重定向?,javascript,node.js,redirect,proxy,node-http-proxy,Javascript,Node.js,Redirect,Proxy,Node Http Proxy,当代理的目标发出重定向(在本例中为301)时,代理将该重定向转发给客户端。然后客户端被重定向到实际域,不再使用代理。有没有办法防止此重定向影响客户端?我希望代理遵循重定向,但我不希望客户端在遵循此重定向时离开代理 示例案例: 假设我有一个代理在伪代理上运行。示例。将目标设置为服务器ip,然后将主机设置为该服务器上的域时,代理将尝试通过http进行连接。域设置为将http流量重定向到https,并使用https向同一域发出301重定向。此重定向被发送回客户端,客户端离开假代理。示例并转到实际域(为
伪代理上运行。示例
。将目标设置为服务器ip,然后将主机设置为该服务器上的域时,代理将尝试通过http
进行连接。域设置为将http
流量重定向到https
,并使用https
向同一域发出301重定向。此重定向被发送回客户端,客户端离开假代理。示例
并转到实际域(为了解决此问题,我们将其称为真实域。示例
)。我的配置:
var选项={
目标:{
主持人:“1.1.1.1”
},
标题:{
主机:“真实域。示例”
},
自动重写:错误,
主持人:错,
协议重写:错误
};
我感谢你的帮助 虽然有点晚了,但下面这样的解决方案可以帮助那些无意中发现这篇文章的人:
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);
}
当然,cookies之类的东西不会被保留,我想你可能会失去一些功能,但至少它是稳定的,因为你不会被重定向出代理域。这方面运气好吗?我也在努力。我希望它是稳定的。没有重定向到真正的域..你找到解决方案了吗?