webpack使用proxy代理时pathRewrite不生效的分析

概述前端打包工具
由于近些年来react、vue等MVVM框架的流行,使得前端的打包工具更倾向于webpack,相比传统的打包工具gulp,grunt等,webpack对于使用vue、react等构建的单页面应用有着超强的亲和力,再加上前端模块化的大趋势,webpack对于处理模块化有着天生的神力,由此webpack自然从众多的打包工具中脱颖而出。

直入主题pathRewrite
简单来说,pathRewrite是使用proxy进行代理时,对请求路径进行重定向以匹配到正确的请求地址,话不多说,上代码,我们先来看看不使用pathRewrite的配置:

proxy: {
   '/api': {
      target: 'http://www.xxx.com',
      changeOrigin: true
   }
}

如上所示,我们现在想请求api中某一个页面的某个接口,配置代理如上,请求代码附上:

axios.get("/api/login")
.then(function(response) {
  console.log(response);
});

如上所示,我们简单的使用axios进行请求。实际上,我们要请求的接口地址是:http://www.xxx.com/login配置代理/api对应的target为:http://www.xxx.com,那么当我们不使用pathRewrite进行路径重定向的时候,加入我们像上述axios的代码那样进行请求时,我们代码中的GET请求是/api/login,此时由于proxy的配置,此请求会被代理成http://www.xxx.com/api/login,显然可以看出,我们的请求地址中多了个/api,此时浏览器会报404错误,此时我们就需要用到pathRewrite重定向功能。

其实,不难看出,当我们配置了代理后,我们请求的地址前面会自动的加上我们所代理的地址,就上述我们的配置举个例子来说,就是,当我们代码中请求的地址是/api/abc的时候,我们真实请求的地址是http://www.xxx.com/api/abc(前面会自动的加上我们所代理的地址)。

回归到最初的例子,当我们请求/api/login时,我们实际上请求的是http://www.xxx.com/api/login,而真实的正确地址是http://www.xxx.com/login,由此发现多了个"/api",由此导致浏览器报404的错误,所以由此分析,我们需要去掉请求路径中多余的/api,此时我们就需要用到pathRewrite进行路径的重定向了。直接上代码如下:

proxy: {
  '/api': {
      target: 'http://www.xxx.com',
      changeOrigin: true,
      pathRewrite: {
        '^/api': '/'
     }
  }
}

我们加了路径的重定向代码pathRewrite,上述代码以正则匹配规则将以/api开头的请求地址修改为"",也就是说,我们这样配置后,当我们请求/api/abc的时候,会被重写为请求/abc,直接在请求地址中将/api变成了"",由此刚好去掉了请求地址中多余的/api,由此,上述的404错误就得到了解决。

原文链接:https://blog.csdn.net/weixin_40920953/article/details/85150784

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • @(临时笔记) 文档资料 webpack关于webpack-dev-server开启proxy的官方介绍Vue-c...
    NicholasNC阅读 54,906评论 15 24
  • 2月14日,白色情人节,或许也是纪念罗密欧与朱丽叶的吧 七月初七,七夕情人节,或许是想象着牛郎织女鹊桥相会时的互诉...
    山中客卿阅读 235评论 0 1
  • 有一种人 他们是“普通人” 普通吗? 不 他们不普通 他们是什么? 他们是 捡到钱包 不据为己有的人 是默默的做着...
    碧溪阅读 173评论 0 0
  • 在大脑中建一所理想的学园,一个教育的乌托邦,这里的学生管理将会非常严格,它的校园文化又充满人性化、人文化与艺术化。...
    耘心阅读 361评论 0 0
  • 立马横刀屠龙梦 攻城拔寨风雪歌 知命者不立乎岩墙之下
    铁无阅读 139评论 0 0

友情链接更多精彩内容