devServer.proxy不生效问题解决

devServer.proxy不生效问题解决

1、proxy 配置解析

devServer: {
    https: true, // 开启https模式
    // 配置服务器代理
    proxy: {
      '/api': { // 匹配访问路径中含有 '/api' 的路径
        target: 'http://localhost:3000/', // 测试地址、目标地址
        changeOrigin: true,
        ws: true, // 是否开启 webSocket 代理
        pathRewrite: { // 请求路径重写
          '^/api': '',   //重写请求路径
        },
      }
    }
  },

2、不生效原因分析
原因一、配置写错了
原因二、路径没有匹配上
解决方法:按照上述proxy 配置确认、解析仔细检查(建议直接复制
原因三、在自己封装的http.js中将axios.defaults.baseURL设置为了如下

axios.defaults.baseURL = 'http://localhost:3000'

导致无法匹配.
解决方法:proxy方式是给我们开发环境用的 ,其次是我们的请求要被开发服务器接收到,且不能匹配到请求,然后我们的请求就会被代理到配置的URL。由于写了一个URL,导致代理不会生效。
注释掉,或者改为本地路径。如下

let baseURL = "/";
if (process.env.NODE_ENV === 'production') {
  baseURL = 'http://localhost:3000/';
}
const http = axios.create({
  baseURL,
})

这样在开发环境下我们的 baseURL = “/”, 代理就可以生效了
3、pathRewrite说明

pathRewrite: { // 请求路径重写
    '^/api': '',   //重写请求路径
 },

pathRewrite的key值 ^/api 就是一个正则表达式。
pathRewrite的value值 ‘ ’为替换后的路径。
意思就是将匹配成功的地址当做一个字符串,然后执行 js 的 replace 方法,将执行成功的最终结果作为最后的请求路径。
比如:
我们有一个请求 axios.get(“/api/aa/bb/cc”) ;
根据我们这里配置的 proxy, 带有 /api 的请求路径就需要进行代理,且 /api/aa/bb/cc 路径中含有 /api ,所以该请求就需要代理。
将路径当做字符串执行, “/api/aa/bb/cc”.replace(/^/api/, “”)
执行结果: /aa/bb/cc
最终的请求路径变成了 http://localhost:3000/aa/bb/cc 不含/api;
又比如说我们的配置为

pathRewrite: { // 请求路径重写
    '^/api': '/epui',   //重写请求路径
 }

那么我们的请求 axios.get(“/api/aa/bb/cc”) ;
会执行 “/api/aa/bb/cc”.replace(/^/api/, “/epui”);
最终的请求路径变成了 http://localhost:3000/epui/aa/bb/cc;
将 /epui 替换了开头的/api。

示例
在这里插入图片描述
在这里插入图片描述

要使vue.config.js中的proxy生效,需要正确配置devServer.proxy选项。根据引用和引用的内容,可以将vue.config.js配置为以下形式: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:8081', changeOrigin: true, pathRewrite: { '^/api': '' } } } } } ``` 这样配置后,当访问以`/api`开头的接口时,会将请求代理到`http://localhost:8081`上。请注意确保代理目标服务器已启动并能够正确响应请求。 同时,还需要在main.js文件中设置axios.defaults.baseURL为'/api',如引用所述,以确保axios在发送请求时自动添加/api前缀来实现跨域访问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue cli3 配置proxy代理无效的解决](https://download.csdn.net/download/weixin_38622467/14828750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [proxy代理不生效、vue config.js不生效解决方法](https://blog.csdn.net/weixin_47379721/article/details/128576797)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

k0933

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值