为什么浏览器请求不通过我的代理服务器?

时间:2011-05-03 04:26:21

标签: http networking proxy node.js

我今天尝试在node.js中用一个基本的HTTP服务器编写一个简单的代理,我在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”下,当我配置它时发送请求,但之后没有任何代理。我想知道“自动”配置正在寻找什么样的响应......

3 个答案:

答案 0 :(得分:1)

您编写的代码不是代理服务器?它只是一个HTTPd响应器,这就是你的curl脚本'工作'但firefox没有

的原因

举一个已经在线的例子,http://catonmat.net/http-proxy-in-nodejs,您将看到除了在节点中设置HTTPd之外,您还要向正在代理的服务器发送HTTP调用并将该输出反馈到对您的响应中浏览器。

答案 1 :(得分:0)

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

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

这对我有用:)

也许你有另一台服务器在8000上运行?

答案 2 :(得分:0)

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

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