vue.config.js中配置代理(devServer)不生效的坑(跨域问题处理

1 篇文章 0 订阅

尚硅谷的后台管理系统,用户与商品信息用的接口端口号不一样。需要配置多个proxy代理

报错:

以下是我一开始配置的第2个代理,注意了第二个名字叫:'/dev-apisku':

 proxy: {
      //代理跨域
      '/dev-api': {
        target: 'http://39.98.123.211:8170', //获取登录用户信息
        changOrigin: true,
        pathRewrite: {'^/dev-api': ''}
      },
      '/dev-apisku': {
        target: 'http://39.98.123.211:8510', //获取品牌
        // target: 'http://39.98.123.211:8416', //获取品牌
        changOrigin: true,
        pathRewrite: {'^/dev-apisku': ''}
      }
    }
  },

运行时报错提示404:

 对了一下接口路径没有问题,postman测试接口也OK。

原因分析:

大意了,浪费了一个小时。

vue.config.js匹配规则导致的,估计不是完全匹配,用的startwith之类的判断:

 /dev-api

/dev-apisku

在匹配: /dev-api,  这个前缀之后,就走了第一个代理转发,

但是我需要的是第二个代理:/dev-apisku

解决:

把'/dev-apisku' 改成不是'/dev-api'开头的即可。

我是把它改成了:/apisku, 然后发送axios请求拦截配置baseurl 地址同步更新一下

 proxy: {
      //代理跨域
      '/dev-api': {
        target: 'http://39.98.123.211:8170', //获取登录用户信息
        changOrigin: true,
        pathRewrite: {'^/dev-api': ''}
      },
      '/apisku': {
        target: 'http://39.98.123.211:8510', //获取品牌
        // target: 'http://39.98.123.211:8416', //获取品牌
        changOrigin: true,
        pathRewrite: {'^/apisku': ''}
      }
    }
  },
const service = axios.create({
  baseURL: '/apisku', // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
})

运行成功:

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值