gpt4 book ai didi

javascript - Node.js http 代理重定向

转载 作者:行者123 更新时间:2023-12-03 12:29:33 25 4
gpt4 key购买 nike

如何使用 node.js 中的 http-proxy 模块跟踪重定向,以便在浏览器中保留相同的 url?

我在反向代理后面有两个网站(A和B),用户通过revere代理完美访问网站A,但是网站A中有一个到网站B的链接,使得浏览器中的url更改为网站B、它仍然应该在浏览器中显示反向代理url

这是我当前的代码

var port = process.env.PORT;

var http = require('follow-redirects').http,
httpProxy = require('http-proxy'),
url = require('url');

// http Server
var proxy = new httpProxy.createServer({});

var httpServer = http.createServer(function (req, res) {

console.log('request received: ' + req.path);

var target = 'http://siteA/';

if (!req.url.toString().endsWith('/')) {
target = target + '/';
}
if (req.url.toString() != '/') {
target = target + req.url;
}

console.log('routing request to ' + target);

var urlObj = url.parse(req.url);

req.headers['host'] = urlObj.host;
req.headers['url'] = urlObj.href;

proxy.proxyRequest(req, res, {
host: urlObj.host,
target: target,
enable: { xforward: true }
});
});

httpServer.listen(port);

console.log("server listening at port: " + port);

String.prototype.endsWith = function (s) {
return this.length >= s.length && this.substr(this.length - s.length) == s;
}

String.prototype.startsWith = function (str) {
return this.indexOf(str) == 0;
};

最佳答案

尽管我怀疑您不会相信,但我还是要发布这个答案,但是使用您的方法您希望做的事情是不可行的。网络不是这样运作的。我在 this answer 中详细阐述了为什么这是真的。 。这样的工作原理是让您的用户在其浏览器设置中将您的 Node 代理配置为代理服务器,然后像平常一样将其目标 URL 放入浏览器地址栏中。这就是网络支持透明代理的方式。作为一种通用方法,尝试让用户将您的代理地址放入其地址栏中是不可行的,因为网络并非完全由静态 HTML 页面中的相关链接组成。

关于javascript - Node.js http 代理重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24004838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com