Node.js的ClientRequest可以使用代理(如fiddler)吗?

是否可以设置node.js来识别代理(例如Fiddler)并通过代理路由所有ClientRequest?

我在Windows上使用节点,并且想要debugginghttp请求,就像在浏览器中使用Fiddler for JavaScript一样。

只是要清楚,我不是试图创build一个代理服务器接收到的代理请求。 我想通过代理路由由http.request()所做的请求。 我想用Fiddler来检查请求和响应,就像我在浏览器中执行请求一样。

为了通过fiddler路由你的客户请求,像这样改变你的options对象(例如:在创buildhttp.request之前):

 options.path = 'http://' + options.host + ':' + options.port + options.path; options.headers.host = options.host; options.host = '127.0.0.1'; options.port = 8888; myReq = http.request(options, function (result) { ... }); 

我觉得以下是漂亮的。 请求模块从Windows环境variables中读取代理信息。

在Windows命令提示符下键入以下内容,将在shell的生命周期中进行设置。 你只需要从这个shell运行你的节点应用程序。

 set https_proxy=http://127.0.0.1:8888 set http_proxy=http://127.0.0.1:8888 set NODE_TLS_REJECT_UNAUTHORIZED=0 

如果您想要从节点监控传出请求,则可以使用请求模块

只需在选项中设置代理属性即可

 request.post('http://204.145.74.56:3003/test', { headers :{ 'content-type' : 'application/octet-stream'}, 'body' : buf , proxy: 'http://127.0.0.1:8888' }, function() { //callback }); 

8888是提琴手的默认端口。

回答我自己的问题:根据https://github.com/joyent/node/issues/1514 答案是否定的 ,但你可以使用request模块, http://search.npmjs.org/#/request ,它支持代理

 process.env.https_proxy = "http://127.0.0.1:8888"; process.env.http_proxy = "http://127.0.0.1:8888"; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";