概述: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會自動將本地的資源視為優先,則會導致你請求后台的數據變成你自己曾經寫的公共數據,獲取不到后台的數據,則不能靈活的控制是否進行代理。
第二種優點:可以配置多個代理,而且還可以靈活的控制是否進行代理,也通過這樣控制是否進行代理,加入了就進行代理,優先后台的資源,不加則只會獲取前端資源,前端資源里面沒有則報錯
缺點:配置相對復雜一點點,而且需要加前綴