node实现简单的反向代理服务器


Posted in Javascript onJuly 26, 2017

每当提起反向代理器,人们通常一想到的就是 Nginx,但是今天我们暂时忽略大名鼎鼎的 Nginx,采用同样也是使用单线程、事件循环的服务端小弟——Node 来达成

跨域问题是前端开发很常见的问题

解决方案有很多种

  1. jsonp返回
  2. Access-Control-Allow-Origin:'*' (需要注意的是 对于post请求会变成option请求需求后端支持)
  3. 前端添加代理

前端添加代理

以vue-cli为例,前端添加代理

dev: {
  env: require('./dev.env'),
  port: 8888,
  autoOpenBrowser: true,
  assetsSubDirectory: 'static',
  assetsPublicPath: '/',
  proxyTable: {
   '/api':{
    target: 'http://localhost:3000',
    changeOrigin: true,
   }
  }

其中'/api'为接口的前缀,target为后端服务地址

前端请求示例

vm.$http.post('/api/reg', JSON.stringify(info)).then(() => {

 }, () => {

 });

反向代理

反向代理可以理解为指定一个服务地址为内部服务器地址。

为什么需要反向代理

如果只是作为接口请求,其实前端搭建代理服务器就可以了,但是代理服务器并不能满足所有的日常开发。

比如说单点登录的实现,需求服务端做302跳转。但是前端文件没有部署到后端服务器时,set-cookie是不能成功种下cookie登录信息的。

这就需要在后端服务器添加反向代理。

示例如下

const http = require('http');
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer();
const proxyServer = http.createServer((req, res) => {
 proxy.web(req, res, {
  target: 'http://localhost:8888',
 });
});
proxyServer.listen(8088, () => {
 console.log('proxy server is running ');
});

这样前端开发就可以在8088端口了,当然热加载功能是在前端服务器的8888端口

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

Javascript 相关文章推荐
javascript网页关键字高亮代码
Jul 30 Javascript
js tab 选项卡
Apr 26 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
jQuery实现跨域
Feb 03 Javascript
简介AngularJS中$http服务的用法
Feb 06 Javascript
node.js实现爬虫教程
Aug 25 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
Sep 06 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
Aug 09 Javascript
微信小程序实现授权登录
May 15 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
vue项目出现页面空白的解决方案
Oct 31 Javascript
Angular项目中$scope.$apply()方法的使用详解
Jul 26 #Javascript
Vue中计算属性computed的示例解读
Jul 26 #Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 #Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 #Javascript
js实现图片轮播效果学习笔记
Jul 26 #Javascript
Angular4如何自定义首屏的加载动画详解
Jul 26 #Javascript
vue上传图片组件编写代码
Jul 26 #Javascript
You might like
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
PHP 上传文件的方法(类)
2009/07/30 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
python数组过滤实现方法
2015/07/27 Python
Python 正则表达式的高级用法
2016/12/04 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
python如何支持并发方法详解
2020/07/25 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
《哪吒闹海》教学反思
2014/02/28 职场文书
房产委托公证书样本
2014/04/04 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
python之基数排序的实现
2021/07/26 Python
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers