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 判断判断某个对象是Object还是一个Array
Jan 28 Javascript
JS对文本框值的判断示例
Mar 10 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
JavaScript文档碎片操作实例分析
Dec 12 Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
Nov 29 Javascript
vue-scroller记录滚动位置的示例代码
Jan 17 Javascript
express+vue+mongodb+session 实现注册登录功能
Dec 06 Javascript
Next.js实现react服务器端渲染的方法示例
Jan 06 Javascript
JavaScript中的"=、==、==="区别讲解
Jan 22 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
Vue中引入svg图标的两种方式
Jan 14 Vue.js
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
一个用于MySQL的PHP XML类
2006/10/09 PHP
PHP之短标签开启设置
2013/06/17 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
使javascript也能包含文件
2006/10/26 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
Node.js简单入门前传
2017/08/21 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python字符串中查找子串小技巧
2015/04/10 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
解决uWSGI的编码问题详解
2017/03/24 Python
Django多数据库的实现过程详解
2019/08/01 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Python适配器模式代码实现解析
2019/08/02 Python
python创建学生成绩管理系统
2019/11/22 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
初中三年毕业生的自我评价分享
2014/02/14 职场文书
母婴店促销方案
2014/03/05 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python