node.js - 使用nodejs将来自远程服务器的http请求重定向到本地服务器

标签 node.js remote-server charles-proxy

在一个叫做 charles 的工具中有一个功能可以让你映射远程请求:

http://www.charlesproxy.com/documentation/tools/map-remote/

基本上,它可以将任何请求发送到服务器(即使您不是运行它的服务器),然后向另一台服务器发出新请求,同时保留路径和查询字符串。然后来自第二台服务器的响应会覆盖来自第一台服务器的响应。

我只是想知道是否有一个 Node 模块可以做到这一点。我尝试使用 http-proxy,但我感觉这个 map 远程工具与代理有点不同,因为看起来你必须拥有两个服务器和代理。

编辑:再次尝试使用 http-proxy Node 模块,但似乎无法正常工作。这是我的代码:

var http = require('http')
, httpProxy = require('http-proxy');

httpProxy.createServer({
    hostnameOnly: true,
    router: {
        'www.stackoverflow.com': 'localhost:9000',
    }
}).listen(80);

// Create your target server
//
http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2));
  res.end();
}).listen(9000);

我的期望是,当我访问 www.stackoverflow.com 或 www.stackoverflow.com:80 时,它会重定向到我的 localhost:9000

最佳答案

不,你要的确实是一个简单的代理。不,您不必“拥有”两台服务器即可运行代理。您只需代理请求,然后您就可以随心所欲地修改数据。

您提到的代理模块可以正常工作,还有很多其他模块。如果您愿意,您也可以使用简单的 Nginx 配置来完成此操作。

关于node.js - 使用nodejs将来自远程服务器的http请求重定向到本地服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21359946/

相关文章:

android - Charles 代理不显示来自 Nexus 7 的流量

javascript - 如何在await page.addScriptTag({url : 'https://code.jquery.com/jquery-3.2.1.min.js' }) in Puppeteer?

node.js - 使用 Nodejs 和 nginx 进行 OpenShift

java - 执行 shell 命令时,channelExec.setCommand() 不起作用

c# - 从 C# 远程 MS Sql 服务器备份和恢复

android - 查尔斯代理修改响应

node.js - timeuuid 的 Cassandra 数据库导入问题

node.js - 如何在同一端口上运行 Node Express 服务器和 Angular?

bash - 从本地机器在远程服务器上运行脚本

ios - Charles 代理推回缓冲区已满