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 拼图游戏 面向对象,注释完整。
Jun 18 Javascript
jQuery 获取和设置select下拉框的值实现代码
Nov 08 Javascript
玩转JavaScript OOP - 类的实现详解
Jun 08 Javascript
移动端 一个简单易懂的弹出框
Jul 06 Javascript
vue.js组件之间传递数据的方法
Jul 10 Javascript
js中bool值的转换及“&&”、“||”、 “!!”详解
Dec 21 Javascript
vue 实现全选全不选的示例代码
Mar 29 Javascript
微信小程序日历组件使用方法详解
Dec 29 Javascript
Vue 实现手动刷新组件的方法
Feb 19 Javascript
Nautil 中使用双向数据绑定的实现
Oct 02 Javascript
jQuery实现简单评论区功能
Oct 26 jQuery
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
Dec 19 Vue.js
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
Chrome Web App开发小结
2014/09/04 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
Python基于动态规划算法计算单词距离
2015/07/25 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
JNI的定义
2012/11/25 面试题
大学生求职中的自我评价
2013/10/01 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
给公司的建议书范文
2014/05/13 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
个人工作能力自我评价
2015/03/05 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书