vue项目中,使用axios跨域处理
我们在使用vue-cli启动项目的时候cnpm start便可以启动我们的项目了,通常我们的请求地址是以localhost:8080来请求接口数据的
想要实现跨域拿到别人域名的东西,我们可以在vue-cli配置文件里面设置一个代理;
在vue-cli项目中的config文件夹下的index.js配置文件中,dev里面配置:
dev: {
env: require('./dev.env'),
port: 8080,
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
cssSourceMap: false
}
我们在使用axios发送请求时,可以把axios绑定在Vue的原型上Vue.prototype.$http=axios。这样我们可以全局使用,this.$$http.get("url").then(res=>{})因为是基于promis的所以可以直接.then
如果请求的地址跨域,我们要在域名后面加上一个“暗号”
例如:“https://m.maizuo.com/v4/api/film/now-playing?__t=1525397149162&page=1&count=5”
这个网址我们写成https://m.maizuo.com/mz/v4/api/film/now-playing?__t=1525397149162&page=1&count=5网址中多出来的/mz是我们自己起的名字,在dev的proxyTable: {}, 进行配置,vue-cli有能力获取到/mz从而做一些事情;
proxyTable: {
'/mz': {//在这里可以匹配"/mz暗号"
target: "https://m.maizuo.com/",//这里是真正的目标域
changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
//这时我们发送的url是带有暗号的url所以下面我们把暗号去掉
pathRewrite: {
'^/mz': ''//匹配暗号用空字符串代替
}
}
}
修改了配置项要重新启动服务器,此时我们就能拿到跨域的数据了。