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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
Javascript 日期对象Date扩展方法
May 30 Javascript
这些年、我收集的JQuery代码小结
Aug 01 Javascript
YUI Compressor压缩JavaScript原理及微优化
Jan 07 Javascript
js查找某元素中的所有图片地址的方法
Jan 16 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
Apr 30 Javascript
JS获取数组最大值、最小值及长度的方法
Nov 24 Javascript
对象题目的一个坑 理解Javascript对象
Dec 22 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
layui-table对返回的数据进行转变显示的实例
Sep 04 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
May 17 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
JS高级笔记
2011/07/13 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Django之模板层的实现代码
2019/09/09 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
J2EE面试题
2016/03/14 面试题
应届生会计求职信
2013/11/11 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
海洋科学专业求职信
2014/08/10 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
早恋主题班会
2015/08/14 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
Python 中面向接口编程
2022/05/20 Python