通过node.js连接http代理访问外网
2012-02-08 12:44
1676 查看
最近在写一个小程序,用到了http模块的request方法,需要通过node.js发送http请求。由于部门上网都得走公司代理,所以要想连接外网,必须先连上公司代理。怎么才能连接上公司代理呢?当我们通过浏览器访问一个网站时,可以看到我们的请求头信息多了如下字段(如图):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202010/12/3fa4725725cb02bb238f310a68a52b93.jpg)
也就是说,我们发送http请求时,必须修改下http请求头,给它加上Proxy-Authorization字段,注意Proxy-Authorization的值是 "用户名:密码"经过base64编码后的值。思路有了,我们可以这么写:
复制代码
运行后我们发现无法连接到dict.youdao.com,过一会就报错了,这是为什么呢?
很显然,我们没有去连接代理服务器。在浏览上,我们在浏览器的网络连接处配置好了代理服务器,但是在node.js上,你也需要指定下。而且你必须告诉代理服务器,当连接成功后必须访问你真正要访问的网页,也就是dict.youdao.com.大家都知道http.request方法的第一个参数是一个Object对象,里面有个path,用来指定网页的路劲,在这里,我们只想真真要访问的地址,也就是 http://dict.youda.com。完整的代码如下:
复制代码
现在我们就可以通过node.js访问外网了 :-)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202010/12/3fa4725725cb02bb238f310a68a52b93.jpg)
也就是说,我们发送http请求时,必须修改下http请求头,给它加上Proxy-Authorization字段,注意Proxy-Authorization的值是 "用户名:密码"经过base64编码后的值。思路有了,我们可以这么写:
var http=require('http'), auth=new Buffer('flyingzl:password').toString('base64'), op={ host:'dict.youdao.com', port:8080, method:'GET', headers:{ 'Proxy-Authorization':'Basic '+auth } } var req=http.request(op,function(res){ res.on('data',function(chunk){ console.log('BODY:'+chunk); }); }); req.on('error',function(e){ console.log('Error got: '+e.message); }); req.end();
复制代码
运行后我们发现无法连接到dict.youdao.com,过一会就报错了,这是为什么呢?
很显然,我们没有去连接代理服务器。在浏览上,我们在浏览器的网络连接处配置好了代理服务器,但是在node.js上,你也需要指定下。而且你必须告诉代理服务器,当连接成功后必须访问你真正要访问的网页,也就是dict.youdao.com.大家都知道http.request方法的第一个参数是一个Object对象,里面有个path,用来指定网页的路劲,在这里,我们只想真真要访问的地址,也就是 http://dict.youda.com。完整的代码如下:
var http=require('http'), auth=new Buffer('flyingzl:password').toString('base64'), op={ host:'www.proxy.net', port:8080, method:'GET', path:'http://dict.youdao.com', headers:{ 'Proxy-Authorization':'Basic '+auth } } var req=http.request(op,function(res){ res.on('data',function(chunk){ console.log('BODY:'+chunk); }); }); req.on('error',function(e){ console.log('Error got: '+e.message); }); req.end();
复制代码
现在我们就可以通过node.js访问外网了 :-)
相关文章推荐
- ngrok集成在本地Node.js项目服务器,实现F5调试即可自动打开浏览器且通过外网可访问本地服务器。
- node.js 通过tedious 连接SQL SERVER
- Node.js~在linux上的部署~外网不能访问node.js网站的解决方法
- node.js通过权限验证连接MongoDB
- node.js通过msnodesql访问SQL Server
- node.js通过edge访问.net动态链接库
- node.js 中通过连接池连接mysql
- node.js通过tedious连接SQLServer数据库方法封装
- 通过 Apache 代理访问 Node.JS, 共享80端口
- node.js 连接外网redis
- 安装下载node.js通过msnodesql访问SQL Server
- 从零开始部署Node.js服务至阿里云ECS服务器并实现外网IP访问
- VirtualBox安装Centos,配置网络(主机可以通过SSH连接虚拟机系统,同时虚拟机系统可以访问外网)
- RED5集成到tomcat,通过外网访问流媒体服务器中的视频时出错问题解决
- Node.js(window)基础(1)——用cmd命令行访问某一文件夹下的js文件
- 通过NVM安装Node.js
- node-webkit中js连接sqlite3文件型数据库
- nodejs mogodb 通过_id查找数据处理
- 从 iOS,Objective-C, IPhone, iPad, Android, Java, Node.js 或其他平台,或通过其他开发语言,使用WS-Trust请求一个ADFS的令牌