详解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极简入门教程(三):进程
Oct 27 NodeJs
nodejs下打包模块archiver详解
Dec 03 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
初探nodeJS
Jan 24 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
使用koa-log4管理nodeJs日志笔记的使用方法
Nov 30 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 23 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 安全过滤函数代码
2011/05/07 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
Vue分页效果与购物车功能
2019/12/13 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
详解重置Django migration的常见方式
2019/02/15 Python
Python同步遍历多个列表的示例
2019/02/19 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
3种python调用其他脚本的方法
2020/01/06 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
护理专业大学生自我推荐信
2014/01/25 职场文书
道路建设实施方案
2014/03/18 职场文书
献爱心活动总结
2014/05/07 职场文书
保护野生动物倡议书
2014/05/16 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
优秀教师事迹材料
2014/12/15 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP