vue的proxy配置的target域名不会覆盖掉axios的baseURL吗?

发布于 2022-09-13 01:25:24 字数 818 浏览 27 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲歌长辞 2022-09-20 01:25:24

proxy我理解为把/geo/xxx开头的替换成target/geo/xxx,你用baseurl后变成baseurl/geo/xxx后就匹配不上

九局 2022-09-20 01:25:24

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文