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 相关文章推荐
两个SUBMIT按钮,如何区分处理
Aug 22 Javascript
动态刷新 dorado树的js代码
Jun 12 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
Apr 05 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
jquery事件重复绑定的快速解决方法
Jan 03 Javascript
浅析webapp框架AngularUI的demo
Dec 21 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
javascript中Date对象的使用总结
Nov 21 Javascript
vue-ajax小封装实例
Sep 18 Javascript
vue.js 添加 fastclick的支持方法
Aug 28 Javascript
浅谈如何优雅处理JavaScript异步错误
Nov 12 Javascript
JavaScript canvas绘制渐变颜色的矩形
Feb 18 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版(1)
2006/10/09 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
php跨站攻击实例分析
2014/10/28 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
jquery中this的使用说明
2010/09/06 Javascript
Js组件的一些写法
2010/09/10 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
Python sorted函数详解(高级篇)
2018/09/18 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
python如何实现数据的线性拟合
2019/07/19 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
展会邀请函范文
2014/01/26 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
谢师宴邀请函
2015/02/02 职场文书
办公经费申请报告
2015/05/15 职场文书
费城故事观后感
2015/06/10 职场文书
团委副书记工作总结
2015/08/14 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
Python测试框架pytest高阶用法全面详解
2022/06/01 Python