vue的proxy配置的target域名不会覆盖掉axios的baseURL吗?
let config = { baseURL: process.env.VUE_APP_BASE_API,
timeout: 30 * 60 * 1000,
}
const _axios = axios.create(config)
devServer: { host: "0.0.0.0",
port: 9529, // 端口号
https: false,
open: true,
hotOnly: true, // 热更新
proxy: {
'/geo': {
target: 'https://geo.datav.aliyun.com',
changeOrigin: true,
secure: false //如果是https接口,需要配置这个参数
},
},
disableHostCheck: true
},
this.$axios.get(`/geo/areas_v3/bound/100000_full.json`).then(res => {}).catch(() => {})
前两步是axios和跨域配置,第三步进行请求第三方数据时(请求的datav的地图),发现会报跨域错误,请求路径前缀依然是VUE_APP_BASE_API而不是"https://geo.datav.aliyun.com",但是当把axios里的baseURL注掉就可以正常的请求通了。
不理解为啥proxy里的target没有将axios的baseURL覆盖掉呢?大佬们求教
回答:
proxy我理解为把/geo/xxx开头的替换成target/geo/xxx,你用baseurl后变成baseurl/geo/xxx后就匹配不上
回答:
devServer.proxy
是起了一个服务器A,所有进入到服务器A的请求,并且配置了proxy
都会被代理
但是如果你axios('https://baidu.com/geo/xxx')
你这请求打到了百度又没打到服务器A
所以必须是请求服务器A:axios('http://127.0.0.1:9529/geo/xxx')
或者axios('/geo/xxx')
没有写ip默认当前服务器
所以baseURL
配置为http://127.0.0.1:9529
或者不配置baseURL
以上是 vue的proxy配置的target域名不会覆盖掉axios的baseURL吗? 的全部内容, 来源链接: utcz.com/p/936126.html