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覆盖掉呢?大佬们求教

阅读 4.9k
2 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题