【问题标题】:Why are browser requests not going through my proxy server?为什么浏览器请求不通过我的代理服务器?
【发布时间】:2011-08-17 10:11:58
【问题描述】:

我今天尝试用一个基本的 HTTP 服务器在 node.js 中编写一个简单的代理,我在 Firefox 中实现当我重新加载代理时,我可以看到一个请求。但是,当我加载任何页面时,它似乎并没有通过我的代理。我可以curl 服务器,它工作正常。但是为什么浏览器没有使用我的代理呢?

代码看起来像:

var http = require('http');

var listener = function(request, response) {
  console.log('hi');

  response.write("200");
  response.end();
};

var server = http.createServer(listener);
server.listen(8000, undefined, function() {
  console.log('Server has started on 8000');
});

我只是在寻找可以改变请求标头的东西,尽管反向代理也很酷。

编辑:这就是我将浏览器指向代理的方式。在 Firefox 中,首选项 -> 高级 -> 网络 -> 设置

我尝试将“手动代理配置”下的 HTTP 代理设置为 127.0.0.1:8000 - 这似乎起到了作用,因为我的所有页面都无法加载,但我在代理服务器上看不到任何活动。

我还尝试将 127.0.0.1:8000 放在“自动代理配置 URL”下,当我配置它时它会发送一个请求,但之后没有任何代理。我想知道“自动”配置正在寻找什么样的响应......

【问题讨论】:

  • 您是如何配置浏览器以使用代理的?你也可以发一下吗?换句话说,它如何知道将请求传递给google.com127.0.0.1:8000(或任何您的代理地址)?
  • 当然,我编辑了原始问题。
  • IP地址前面需要http://吗?

标签: http networking proxy node.js


【解决方案1】:

在 Firefox 中,您要设置手动代理配置 -> Http 代理:127.0.0.1 和您的端口 8000

勾选“将此代理服务器用于所有协议”

这对我有用:)

也许您在 8000 上运行了另一台服务器?

【讨论】:

    【解决方案2】:

    要使用 Charles 捕获到 localhost 的流量,您需要使用 http://localhost./(是的,末尾带有一个点)。

    请参阅此处的文档: http://www.charlesproxy.com/documentation/faqs/localhost-traffic-doesnt-appear-in-charles

    【讨论】:

      【解决方案3】:

      你写的代码不是代理服务器吗?它只是一个 HTTPd 响应程序,这就是为什么您的 curl 脚本“有效”但 firefox 没有的原因

      以已经在线的示例http://catonmat.net/http-proxy-in-nodejs 为例,您将看到除了在节点中设置 HTTPd 之外,您还可以向被代理的服务器发送 HTTP 调用,并将输出返回到浏览器的响应中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 1970-01-01
        • 2018-06-21
        • 2015-03-22
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        相关资源
        最近更新 更多