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 相关文章推荐
javascript常用对话框小集
Sep 13 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
js比较日期大小的方法
May 12 Javascript
Javascript实现网络监测的方法
Jul 31 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
使用JS和canvas实现gif动图的停止和播放代码
Sep 01 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 Javascript
10行原生JS实现文字无缝滚动(超简单)
Jan 02 Javascript
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 Javascript
微信小程序基础教程之worker线程的使用方法
Jul 15 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
PHP面向对象编程快速入门
2006/12/14 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
JavaScript指定断点操作实例教程
2018/09/18 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
python放大图片和画方格实现算法
2018/03/30 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
python 制作网站小说下载器
2021/02/20 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
经管应届生求职信
2013/11/17 职场文书
《狼》教学反思
2014/03/02 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
租车协议书范本2014
2014/11/17 职场文书
社区义诊通知
2015/04/24 职场文书
夫妻吵架保证书
2015/05/08 职场文书
第一书记观后感
2015/06/08 职场文书
新课程改革心得体会
2016/01/22 职场文书
Python Matplotlib库实现画局部图
2021/11/17 Python