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 相关文章推荐
Exitjs获取DataView中图片文件名
Nov 26 Javascript
Jquery Validation插件防止重复提交表单的解决方法
Mar 05 Javascript
Javascript 面向对象 继承
May 13 Javascript
js 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
常用的javascript设计模式
Jan 11 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
对vue中v-on绑定自定事件的实例讲解
Sep 06 Javascript
详解async/await 异步应用的常用场景
May 13 Javascript
如何进行微信公众号开发的本地调试的方法
Jun 16 Javascript
微信小程序自定义组件实现环形进度条
Nov 17 Javascript
vue实现列表滚动的过渡动画
Jun 29 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
自动跳转中英文页面
2006/10/09 PHP
php 分页函数multi() discuz
2009/06/21 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
js实现双色球效果
2020/08/02 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
Python FTP操作类代码分享
2014/05/13 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
若干个Java基础面试题
2015/05/19 面试题
白酒业务员岗位职责
2013/12/27 职场文书
代理协议书范本
2014/04/22 职场文书
服务承诺书怎么写
2014/05/24 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书