vue解决跨域问题汇总
方法1:后台更改header
header('Access-Control-Allow-Origin:*');
//允许所有来源访问header('Access-Control-Allow-Method:POST,GET');
//允许访问的方式
方法2:使用Jquery提供的jsonp
methods:{
getData(){
var self = this;
$.ajax({
url:"http://xxxxxxxx.json",
type:"GET",
dataType:"JSONP",
success:function(res){
self.data = res.data.slice(0,3)
self.opencode = res.data[0].opencode.split(',')
}
})
}
}
方法3:使用http-proxy-middleware代理模块(项目使用vue-cli脚手架搭建)
打开config/index.js,在proxyTable中添加如下代码:
proxyTable:{
'/api':{ //使用/api来代替https://xxxx.com
target:"https://xxxx.com",//源地址
changeOrigin:true,//改变源
pathRewrite:{
'^/api':"https://xxxxx.com" //路径重写
}
}
}
使用axios请求数据时直接使用”/api”
getData(){
axios.get('/api/xxx.json',function(res){
console.log(res);
})
}
通过这种方法解决跨域,打包部署时还按这种方法会出现问题,解决方法如下下:
let serverUrl = "/api/" // 本地调试时
// let aerverUrl = "https://xxxx.com" //打包部署上线时
export default {
dataUrl:serverUrl + "xxxx.json"
}
引入jquery的两种方式
通过jquery文件引入
通过下载依赖安装依赖引入
- 下载依赖
cnpm install jquery --save-dev
在webpack.base.conf.js文件中加入
plugins:[
new webpack.ProvidePlugin({
$:'jquery',
jQuery:'jquery'
})
]
在需要的template中引入,也可以在main.js中全局引入
import $ from "jquery"
还没有评论,来说两句吧...