我今天尝试在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”下,当我配置它时发送请求,但之后没有任何代理。我想知道“自动”配置正在寻找什么样的响应......
答案 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