详解nodejs通过代理(proxy)发送http请求(request)


Posted in NodeJs onSeptember 22, 2017

有可能有这样的需求,需要node作为web服务器通过另外一台http/https代理服务器发http或者https请求,废话不多说直接上代码大家都懂的:

var http = require('http')
var opt = {
 host:'这里放代理服务器的ip或者域名',
 port:'这里放代理服务器的端口号',
 method:'POST',//这里是发送的方法
 path:' https://www.google.com',   //这里是访问的路径
 headers:{
 //这里放期望发送出去的请求头
 }
}
//以下是接受数据的代码
var body = '';
var req = http.request(opt, function(res) {
 console.log("Got response: " + res.statusCode);
 res.on('data',function(d){
 body += d;
 }).on('end', function(){
 console.log(res.headers)
 console.log(body)
 });

}).on('error', function(e) {
 console.log("Got error: " + e.message);
})
req.end();

这样我们就通过了指定代理服务器发出了https的请求,注意这里我们同代理服务器是http协议的,不是https,返回的结果当然肯定会根据你的代理服务器不同有所不同。

Got response: 302
{ location: 'https://www.google.com.tw/',
 'cache-control': 'private',
 'content-type': 'text/html; charset=UTF-8',
 'set-cookie': 
  [ 'PREF=ID=b3cfcb24798a7a07:FF=0:TM=1356078097:LM=1356078097:S=v_3qEd0_gCW6-xum; expires=Sun, 21-Dec-2014 08:21:37 GMT; path=/; domain=.google.com',
   'NID=67=qoJf_z3W7KlibpNZ6xld__r0rYGyYu7l_XiDQmZ3anjBFadDzhijME3QcX651yucne_irK_2JMS8HF5FuxNl85mE0nDrtn9Iq0z2gW69n00OrB970hpHTbYe0mAogZit; expires=Sat, 22-Jun-2013 08:21:37 GMT; path=/; domain=.google.com; HttpOnly' ],
 p3p: 'CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."',
 date: 'Fri, 21 Dec 2012 08:21:37 GMT',
 server: 'gws',
 'content-length': '223',
 'x-xss-protection': '1; mode=block',
 'x-frame-options': 'SAMEORIGIN',
 via: '1.0 ***.****.com:80 (squid/2.6.STABLE21)',
 'proxy-connection': 'keep-alive' }
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A href="https://www.google.com.tw/" rel="external nofollow" >here</A>.
</BODY></HTML>

谷歌返回了一个302,告诉我们进行跳转,需要访问 https://www.google.com.tw/ 这个地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
NodeJS的url截取模块url-extract的使用实例
Nov 18 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 NodeJs
node快速搭建后台的实现步骤
Feb 18 NodeJs
使用vs code开发Nodejs程序的使用方法
Sep 21 #NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 #NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 #NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 #NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 #NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 #NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 #NodeJs
You might like
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
python赋值操作方法分享
2013/03/23 Python
python实现ping的方法
2015/07/06 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
python实现大转盘抽奖效果
2019/01/22 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
院药学专业个人求职信
2013/09/21 职场文书
医大实习自我鉴定
2013/12/07 职场文书
二手车转让协议书
2015/01/29 职场文书
开票员岗位职责
2015/02/12 职场文书
2015年宣传工作总结
2015/04/08 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
Vue实现下拉加载更多
2021/05/09 Vue.js
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript