尚硅谷的后台管理系统,用户与商品信息用的接口端口号不一样。需要配置多个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
})