node跨域转发 express+http-proxy-middleware的使用


Posted in Javascript onMay 31, 2018

最近公司在尝试前后端分离的开发模式,现有应用是java语言,要从中间拆除一个小的模块来做前后端分离,工具上还是jquery,只不过是流程和分工上的分离,不想在前端的机器上搭建一套java环境,就根据教程搭了一下转发,让本地可以接上开发服务器联调。

为什么要使用node代理转发?

我们要实现前后端分离,然后前端不在自己的电脑上安装tomcat,这时候,我们通过用node搭建服务器,然后转发我们的请求。例如:自己本地是localhost:3000,我们需要访问http://www.example.com(当然,开发过程中,这个应该是你们后台的tomcat的地址), 来做ajax的数据交互。

创建项目

npm init

安装模块

npm install express connect-timeout http-proxy-middleware --save-dev

创建js文件

<!--proxy-server.js-->
const express = require('express');
const timeout = require('connect-timeout');
const proxy = require('http-proxy-middleware');
const app = express();

// 超时时间
const TIME_OUT = 30 * 1e3;

// 设置端口
app.set('port', '80');

// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
 if (!req.timedout) next();
});


proxyOption = {
 target: 'http://localhost:8080',
 pathRewrite: {
    '^/api/' : '/' // 重写请求,api/解析为/
  },
  changeOrigoin:true
};

// 静态资源路径
app.use('/', express.static('src/page'));

// 反向代理
app.use('/api/*', proxy(proxyOption));

// 监听端口
app.listen(app.get('port'), () => {
 console.log(`server running @${app.get('port')}`);
});

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

Javascript 相关文章推荐
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
Dec 02 Javascript
JS字符串函数扩展代码
Sep 13 Javascript
json对象转字符串如何实现
Dec 02 Javascript
javascript加号&quot;+&quot;的二义性说明
Mar 04 Javascript
Jquery获得控件值的三种方法总结
Feb 13 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
javascript结合fileReader 实现上传图片
Jan 30 Javascript
AngularJS1.X学习笔记2-数据绑定详解
Apr 01 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
js中怎么判断两个字符串相等的实例
Jan 17 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
Jul 20 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
May 31 #Javascript
Node.js笔记之process模块解读
May 31 #Javascript
Vue组件中prop属性使用说明实例代码详解
May 31 #Javascript
用JS实现根据当前时间随机生成流水号或者订单号
May 31 #Javascript
Vue2 轮播图slide组件实例代码
May 31 #Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
May 31 #Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 #Javascript
You might like
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
Python实现身份证号码解析
2015/09/01 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
python实现转圈打印矩阵
2019/03/02 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
Django model select的多种用法详解
2019/07/16 Python
Python创建临时文件和文件夹
2020/08/05 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
《望洞庭》教学反思
2014/02/16 职场文书
万里长城导游词
2015/01/30 职场文书
英文产品推荐信
2015/03/27 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技