先说解决方法,下面BB一堆不想看的可以不看
找到

src/api/util.js
这个文件,里面找到这一行

axios.defaults.withCredentials = true

把true改成false即可

跨域的问题一般前端遇到最多的就是后端接口response头信息Access-Control-Allow-Origin没有添加相应的允许域名导致的。
前端的解决方法有使用本地代理或者jsonp来进行处理。
axios没有jsonp的处理方式,所以这里我们也不能用这种方式来处理跨域问题,只能使用代理方式了。
但是我是非常不喜欢用代理这种方式来解决的。主要原因是因为同样的接口,同样的打包方法,为什么我的其他项目可以正常使用,但是iview-admin这个框架不行呢?
对跨域的报错信息详细看了一下后,发现里面有一句

 The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

关键词就是withCredentials了。它的作用是跨域请求是否提供凭据信息(cookie、HTTP认证及客户端SSL证明等),也可以简单的理解为,当前请求为跨域类型时是否在请求中协带cookie。
但是当我们服务器不进行凭据信息验证或者凭据信息验证的域里面没有添加跨域的话,那么就会报错了!
找到了问题就好办了。使用以上的方法,把这个配置关掉。跨域问题完美解决

标签: iview-admin, 跨域, axios跨域

评论已关闭