Vue中axios跨域請求解決方法
前言
跨域 :指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。
同源 是指,域名,協議,端口均相同,瀏覽器執行 js 腳本時,會檢查這個腳本屬於哪個頁面,如果不是同源頁面,就不會被執行。
以下舉例:
(1)http://www.123.com/index.html 調用 http://www.123.com/server.php (非跨域)
(2)http://www.123.com/index.html 調用 http://www.456.com/server.php (主域名不同:123/456,跨域)
(3)http://abc.123.com/index.html 調用 http://def.123.com/server.php (子域名不同:abc/def,跨域)
(4)http://www.123.com:8080/index.html 調用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
(5)http://www.123.com/index.html 調用 https://www.123.com/server.php (協議不同:http/https,跨域)
(6)localhost和127.0.0.1雖然都指向本機,但也屬於跨域。
一,前端解決之 代理
僅開發環境下建議如此。。
1. vue-cli 2.x 版本解決方法如下
(1) Vue 的 config 文件夾下的 index.js 文件中,在 proxyTable
對象中書寫跨域配置項:將以 /api 開頭的請求地址基礎URL替換為 http://localhost:8888
(2)將 axios 的 baseURL 改為 /api
2. vue-cli 3.x 版本解決方法如下
(1)在項目根目錄下創建全局配置文件 vue.config.js
(2)在配置文件中書寫跨域配置(如下圖)
(3)將 axios 的 baseURL 改為 /api
二,后端springboot項目解決之 配置項
推薦在服務端進行跨域相關配置,在項目中新建允許跨域配置類,如下圖。