利用node.js实现反向代理的方法详解


Posted in Javascript onJuly 24, 2017

本文主要给大家介绍的是关于利用node.js实现反向代理的相关内容,分享出供大家参考学习,下面话不多说,来一起看看详细的介绍:

跨域问题是前端开发很常见的问题解决方案有很多种

  • jsonp返回
  • Access-Control-Allow-Origin:'*' (需要注意的是 对于post请求会变成option请求需求后端支持)
  • 前端添加代理

前端添加代理

以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 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 学习小结(适合新手参考)
Jul 30 Javascript
javascript开发随笔一 preventDefault的必要
Nov 25 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
Mar 26 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
JavaScript编写连连看小游戏
Jul 07 Javascript
jquery实现具有嵌套功能的选项卡
Feb 12 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
基于vue.js的分页插件详解
Nov 27 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
Aug 08 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
Oct 16 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
May 07 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
Jul 24 #Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
Jul 24 #Javascript
JavaScript对JSON数据进行排序和搜索
Jul 24 #Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
Jul 24 #Javascript
深入理解React Native原生模块与JS模块通信的几种方式
Jul 24 #Javascript
浅析JavaScript中的平稳退化(graceful degradation)
Jul 24 #Javascript
vue.js移动端app实战1:初始配置详解
Jul 24 #Javascript
You might like
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
Python实现多进程的四种方式
2019/02/22 Python
Python:slice与indices的用法
2019/11/25 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
Python新手学习装饰器
2020/06/04 Python
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
数控机械专业个人的自我评价
2014/01/02 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
村级个人对照检查材料
2014/08/22 职场文书
教师四风问题整改措施
2014/09/25 职场文书
个人业务学习心得体会
2016/01/25 职场文书
如何用PHP实现多线程编程
2021/05/26 PHP
MySQL一些常用高级SQL语句
2021/07/03 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers