详解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导出excel的方法
Jun 30 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 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 和 XML: 使用expat函数(三)
2006/10/09 PHP
PHP 选项及相关信息函数库
2006/12/04 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
php微信支付之APP支付方法
2015/03/04 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
js星星评分效果
2014/07/24 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
不要用强制方法杀掉python线程
2017/02/26 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
优秀中学生事迹材料
2014/01/31 职场文书
校园广播稿精选
2014/10/01 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
薪资证明范本
2015/06/19 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL