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 相关文章推荐
经典的解除许多网站无法复制文字的绝招
Dec 31 Javascript
什么是JavaScript
Aug 13 Javascript
一次失败的jQuery优化尝试小结
Feb 06 Javascript
php对mongodb的扩展(小试牛刀)
Nov 11 Javascript
JavaScript实现存储HTML字符串示例
Apr 21 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
Apr 25 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
基于angularjs实现图片放大镜效果
Aug 31 Javascript
jQ处理xml文件和xml字符串的方法(详解)
Nov 22 Javascript
js监听input输入框值的实时变化实例
Jan 26 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
php 中英文语言转换类代码
2011/08/11 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
2014年医学生毕业自我鉴定
2014/03/26 职场文书
2014年秋季开学寄语
2014/08/02 职场文书