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语句中的CDATA标签的意义
May 09 Javascript
jQuery 使用手册(六)
Sep 23 Javascript
javascript 三种编解码方式
Feb 01 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
May 22 Javascript
javascript实现根据身份证号读取相关信息
Dec 17 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
简单的分页代码js实现
May 17 Javascript
jQuery排序插件tableSorter使用方法
Feb 10 Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 Javascript
webpack中如何加载静态文件的方法步骤
May 18 Javascript
jQuery ajax - getScript() 方法和getJSON方法
May 14 jQuery
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实现ODBC数据分页显示一例
2006/10/09 PHP
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
python基于右递归解决八皇后问题的方法
2015/05/25 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
python机器学习之神经网络实现
2018/10/13 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
python request 模块详细介绍
2020/11/10 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
《月光启蒙》教学反思
2014/03/01 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
医院领导班子整改方案
2014/10/01 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
雨花台导游词
2015/02/06 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书