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 相关文章推荐
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
Mar 24 Javascript
Js实现自定义右键行为
Mar 26 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
May 17 Javascript
jQuery实现微信长按识别二维码功能
Aug 26 Javascript
Angular中的$watch方法详解
Sep 18 Javascript
vue中render函数的使用详解
Oct 12 Javascript
ztree加载完成后显示勾选节点的实现代码
Oct 22 Javascript
图文讲解vue的v-if使用方法
Feb 11 Javascript
package.json中homepage属性的作用详解
Mar 11 Javascript
在vue中获取wangeditor的html和text的操作
Oct 23 Javascript
vue 插槽简介及使用示例
Nov 19 Vue.js
javascript对象3个属性特征
Nov 17 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
一段php加密解密的代码
2006/10/09 PHP
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
js倒计时小程序
2013/11/05 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
10个Python小技巧你值得拥有
2018/09/29 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
Python用input输入列表的实例代码
2020/02/07 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
如何写一个自定义标签
2012/12/28 面试题
厂办主管岗位职责范本
2014/02/28 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python