Vue + axios 访问后台 ip 调用服务的问题

首先我们提出几个问题:

  1. 本地项目启动端口 localhost:8080  , 你想去连接后台开发人员的 ip 调接口, 后台ip+端口号+访问api,比如说是 http://10.220.146.82:8991/dispatch/orderList , 此时必然被引起跨域。就是你使用 localhost:8080 去访问 http://10.220.146.82:8991,浏览器同源策略限制,必须配置跨域。

  2. 当你配置了跨域发现没生效,为什么呢? 此时查看项目使用了 axios.defaults.baseURL = "http://abc.com:8090"。跨域被覆盖了。查看控制台,访问的还是远程路径的请求地址:

  http://abc.com:8090/dispatch/orderList。那么问题来了。

  问题一: axios.defaults.baseURL 优先级是否比 proxyTable 中配置的高?

  问题二: axios.defaults.baseURL 是项目远程服务地址,微服务项目各个模块服务地址都不一样,不可能逐个配置怎么办?

  问题三: 如果用你的服务地址重写了 axios.defaults.baseURL ,你的其他服务(比如登录)就不可用了,登陆不进去,访问不到目标页面怎么办?

  问题四: 如果前端项目使用了 vue + qiankun 的微服务方案,proxyTable  怎么配置?


 

下面对以上问题进行解答:

  问题一: axios.defaults.baseURL 会覆盖 proxyTable 配置的 url。所以 baseURL 是肯定要注释掉的。何时注释?  如果你不会配置 proxyTable 请查看  vuue-cli2.0 请查看https://www.jianshu.com/p/758f2c798f0a  vue-cli3.0 请查看 https://blog.csdn.net/lj90019002/article/details/81116879

  问题二: 部分接口访问可能要牺牲掉。

  问题三: 【登录后再去注释】注释可以解决问题二,问题三。

  问题四:  vue + qiankun 方案项目 proxyTable 在主项目中生效,所以只需要配置主项目。如果你对 vue + qiankun 不了解请查看 https://segmentfault.com/a/1190000021547996

 

  

posted @ 2020-06-05 16:11  monkey-K  阅读(2742)  评论(0编辑  收藏  举报