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 相关文章推荐
Jquery ajaxsubmit上传图片实现代码
Nov 04 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 Javascript
jQuery toggleClass应用实例(附效果图)
Apr 06 Javascript
jquery $(document).ready()和window.onload的区别浅析
Feb 04 Javascript
Bootstrap栅格系统学习笔记
Nov 25 Javascript
深入理解Javascript中的valueOf与toString
Jan 04 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
Angular指令之restict匹配模式的详解
Jul 27 Javascript
Vue组件通信实践记录(推荐)
Aug 15 Javascript
Layui表格行工具事件与数据回填方法
Sep 13 Javascript
原生JavaScript实现的无缝滚动功能详解
Jan 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
Protoss兵种对照表
2020/03/14 星际争霸
PHP_MySQL教程-第一天
2007/03/18 PHP
php header()函数使用说明
2008/07/10 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
video.js添加自定义组件的方法
2020/12/09 Javascript
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
庆七一活动方案
2014/01/25 职场文书
廉洁自律承诺书
2014/03/27 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL