首先npm安装好axios,其次在main.js中引入:
1 import axios from 'axios' 2 3 Vue.prototype.$axios = axios //把axios挂载到vue的原型中,在vue中每个组件都可以使用axios发送请求 4 Vue.prototype.HOME = '/api' //重要在于这里,Vue.prototype.HOME = '/api'是一个定值,默认指向localhost,所有修改指向路径为'/api',配置文件index.js定义的可跨域路径
第二步就是修改上述所说的config>index.js配置文件:
1 module.exports = { 2 dev: { 3 // Paths 4 assetsSubDirectory: 'static', 5 assetsPublicPath: '/', 6 proxyTable: { //axios跨域处理 7 '/api': { //此处并非和url一致 8 target:'http://192.168.2.80:8081/', 9 changeOrigin:true, //允许跨域 10 pathRewrite:{ 11 '^/api': '' 12 } 13 } 14 } 15 } 16 ....以下省略 17 }
最后就是在需要跨域的文件中操作了:
1 created() { 2 var url = this.HOME + '/index***ds/getFe***List'; //HOME变量为已挂载的可跨域域名,这里将其拼接完,成为一个完整路径 3 this.$axios({ //this代表vue对象,之前在入口文件中把axios挂载到了vue中,所以这里直接用this.$axios调用axios对象 4 method: 'post', 5 url: url, 6 data: {feedType: 1, page: 1, pagesize: 10} 7 }).then(function (res) { 8 console.log(res); 9 }).catch(function (err) { 10 console.log(err); 11 }) 12 },
这样就可以成功跨域,拿到后台返回的数据了。
需要注意的是:在Vue项目中如果我们修改了config里面的文件,请千万要重新启动项目,重新启动项目,重新启动项目,不然一定会报错。
当然,这只是在本地可以正常跨域访问接口,线上的话,还需要和后台协商处理。线上推荐用Nginx。(后续会发布相关知识)