Dav*_*ers 6 javascript proxy redirect node.js node-http-proxy
当代理的目标发出重定向(在本例中为 301)时,代理会将其转发给客户端。然后客户端被重定向到实际域并且不再使用代理。有没有办法防止这种重定向影响客户端?我希望代理遵循重定向,但我不希望客户端在遵循此重定向时离开代理。
示例案例:
假设我在fake-proxy.example. 将目标设置为服务器 ip,然后将主机设置为该服务器上的域时,代理会尝试通过http. 该域设置为将http流量重定向到https并发出 301 重定向到与https. 这个重定向被发送回客户端,客户端离开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
};
Run Code Online (Sandbox Code Playgroud)
我感谢您的帮助!
虽然有点晚了,但是像下面这样的解决方案可以帮助那些偶然发现这篇文章的人:
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);
}
Run Code Online (Sandbox Code Playgroud)
当然,cookie 等不会被保留,我猜你可能会失去一些功能,但至少,它是稳定的,因为你不会被重定向出你的代理域。