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 相关文章推荐
浅析jQuery的链式调用之each函数
Dec 03 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
Jan 03 Javascript
在javascript中关于节点内容加强
Apr 11 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
Aug 18 Javascript
jquery和js实现对div的隐藏和显示方法
Sep 26 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
JavaScript数据类型学习笔记分享
Sep 01 Javascript
jQuery与JS加载事件用法分析
Sep 04 Javascript
微信小程序开发实战教程之手势解锁
Nov 18 Javascript
Angular 4.0学习教程之架构详解
Sep 12 Javascript
js的新生代垃圾回收知识点总结
Aug 22 Javascript
javascript全局自定义鼠标右键菜单
Dec 08 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
Python手机号码归属地查询代码
2016/05/04 Python
python交换两个变量的值方法
2019/01/12 Python
python字符串循环左移
2019/03/08 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
应届生护士求职信
2013/11/01 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
Python基础之元类详解
2021/04/29 Python
如何利用pygame实现打飞机小游戏
2021/05/30 Python
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers