详解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的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
nodejs下打包模块archiver详解
Dec 03 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 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
ajax缓存问题解决途径
2006/12/06 PHP
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python入门之modf()方法的使用
2015/05/15 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
简单html5代码获取地理位置
2014/03/31 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
某公司的.net工程师面试题笔试题
2013/11/22 面试题
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
公司劳动纪律管理制度
2015/08/04 职场文书
详解CSS3浏览器兼容
2022/12/24 HTML / CSS