概述:Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
当我们使用vue向服务器发送AJAX请求时,我们会遇到跨域问题,一般跨域的解决方案有俩种,一种是官方的CORS,还有一种就是利用<script>中的src(就是jsonp),
在vue中则可以使用代理服务器来解决跨域的问题。
接下来有俩种方法的展示和介绍:
在vue.config.js里面进行配置
一:
devServer: {
proxy:'http://localhost:5000' //代理服务器的目标的基础路径
}
二:
devServer: {
proxy: {
'/first': {
target: 'http://localhost:5000', //代理目标的基础路径
pathRewrite: { '^/first': '' }, //重写路径,将代理服务器发送给服务器的请求路径进行更改,这样就可以让服务器收到的请求正常
ws: true, //用于支持websocket
changeOrigin: true //用于控制请求头中的host值
},
}
}
但是这种需要在配置axios的路径的时候,在后方加入设置好的前缀
例:
methods: {
add(){
axios.get('http://localhost:8080/first/students').then(
response=>{console.log("请求成功了",response.data)},
error =>{console.log("请求失败了",error.message)}
)
}
},
区别于优缺点:
第一种优点:配置相对简单
缺点:只能配置一个代理,就是当后台服务器超过一台的时候,便不再适用,而且当你前端资源(public)上面如果有名字相同的文件,vue会自动将本地的资源视为优先,则会导致你请求后台的数据变成你自己曾经写的公共数据,获取不到后台的数据,则不能灵活的控制是否进行代理。
第二种优点:可以配置多个代理,而且还可以灵活的控制是否进行代理,也通过这样控制是否进行代理,加入了就进行代理,优先后台的资源,不加则只会获取前端资源,前端资源里面没有则报错
缺点:配置相对复杂一点点,而且需要加前缀