webpack配置proxyTable时pathRewrite无效的解决方法


Posted in Javascript onDecember 13, 2018

本人webpack版本3.6,webpack-dev-server版本2.9.1,本人按照网上写的版本折腾两天都没通,无意间自己试通了,猜测网上大部分都是照本宣科,没有自己实践

webpack配置接口地址代理

在项目开发中,接口联调的时候一般都是同域名下,且不存在跨域的情况下进行接口联调,但是当我们在本地启动服务器后,比如本地开发服务下是 http://localhost:8080 这样的访问链接,但是我们的接口地址是  http://www.xxx.com/save/post 这样的,我们这样直接使用就会存在跨域的请求,导致接口请求不成功。

配置:

我们打开下面路径的文件

config/index.js

在其中的 dev 对象里面找到: proxyTable: {}

这里就是配置代理的地方,我们进行如下设置:

module.exports = {
 // ...
 dev: {
  // 代理配置表,在这里可以配置特定的请求代理到对应的API接口
  proxyTable: {
   '/api': {
    target: 'http://www.xxx.com', // 你接口的域名
    secure: false,   // 如果是https接口,需要配置这个参数为true
    changeOrigin: true,   // 如果接口跨域,需要进行这个参数配置为true
  
   }
  },
 }
}

接口地址原本是 /save/post ,但是为了匹配代理地址,在前面加一个  /api , 因此接口地址需要写成这样的即可生效  /api/save/post 。

即:前端本地启动接口为:http://localhost:8080/api/save/post,转发的代理接口为:http://www.xxx.com/api/save/post,其中的/api为匹配项。

/api 是本地路径和后端接口路径的匹配前缀,若后端接口给了/api这个前缀,可用上面的写法。

若后端前缀不统一,则可继续添加,写法如下:

module.exports = {
 // ...
 dev: {
  // 代理配置表,在这里可以配置特定的请求代理到对应的API接口
  proxyTable: {
   '/api': {
    target: 'http://www.xxx.com', // 你接口的域名
    secure: false,   // 如果是https接口,需要配置这个参数为true
    changeOrigin: true,   // 如果接口跨域,需要进行这个参数配置为true
  
   },
   '/api': {
    target: 'http://www.xxx.com', // 你接口的域名
    secure: false,   // 如果是https接口,需要配置这个参数为true
    changeOrigin: true,   // 如果接口跨域,需要进行这个参数配置为true
  
   }
  },
 }
}

那么还有一种情况,是后端的接口没有我们想要的匹配项(前缀)'/api',是直接的http://www.xxx.com/save/post,这样的接口,我们就要用到pathRewrite来重写地址,将本地路径上的带匹配前缀的路径:http://localhost:8080/api/save/post上的前缀'/api'转成 ‘ / '。以下第一种是网络上大部分推荐的,但是我亲测是无效的,估计他们多数用的上面的方法,没有实际使用下面的方法,LZ用以下第一种方法折腾了2天无果,后去看了webpack-dev-server的issue,无意义试通了接口,即下面第二种方法,当然也不排除第一种方法是我的版本问题而没有效果,所以如果大家试了第一种方法有效就当我的方法没说,如果无效,不妨试试我的第二种方法:

第一种方法(网上写的方法)

module.exports = {
 // ...
 dev: {
  // 代理配置表,在这里可以配置特定的请求代理到对应的API接口
  proxyTable: {
   '/api': {
    target: 'http://www.xxx.com', // 你接口的域名
    secure: false,   // 如果是https接口,需要配置这个参数为true
    changeOrigin: true,   // 如果接口跨域,需要进行这个参数配置为true
    pathRewrite: {
     '^/api': '/'
    }
   }
  },
 }
}

第二种方法(亲测有效的方法)

module.exports = {
 // ...
 dev: {
  // 代理配置表,在这里可以配置特定的请求代理到对应的API接口
  proxyTable: {
   '/api/*':{
    target: "http://XXX.XXX.com",
    changeOrigin: true,
    pathRewrite: {'/api':'/'}
   }
  },
 }
}

即将上面的匹配项从 ‘/api' 改成了 '/api/*',至于为什么,我表示也没有搞明白,不过确实调通了代理,希望对大家有帮助

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

Javascript 相关文章推荐
js表格分页实现代码
Sep 18 Javascript
理解Javascript_03_javascript全局观
Oct 11 Javascript
jquery插件制作简单示例说明
Feb 03 Javascript
js简单的表格添加行和删除行操作示例
Mar 31 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
常见JS验证脚本汇总
Dec 01 Javascript
Bootstarp风格的toggle效果分享
Feb 23 Javascript
省市二级联动小案例讲解
Jul 24 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
详解关于微信setData回调函数中的坑
Feb 18 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
Mar 27 Javascript
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
node.js学习笔记之koa框架和简单爬虫练习
Dec 13 #Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 #Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
Dec 13 #Javascript
javascript对HTML字符转义与反转义
Dec 13 #Javascript
Web安全之XSS攻击与防御小结
Dec 13 #Javascript
JavaScript实现邮箱后缀提示功能的示例代码
Dec 13 #Javascript
深入理解js A*寻路算法原理与具体实现过程
Dec 13 #Javascript
You might like
为查询结果建立向后/向前按钮
2006/10/09 PHP
缓存技术详谈―php
2006/12/14 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
python3实现磁盘空间监控
2018/06/21 Python
django 信号调度机制详解
2019/07/19 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
django中cookiecutter的使用教程
2020/12/03 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
策划主管的工作职责
2013/11/24 职场文书
财务经理的岗位职责
2013/12/17 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
介绍信的格式
2015/01/30 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
老公出轨后的保证书
2015/05/08 职场文书
2015年度女工工作总结
2015/10/22 职场文书
解决redis批量删除key值的问题
2022/03/23 Redis
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android