vue axios 請求跨域
接上篇vue baseUrl多後端環境切換,換成真實的地址後發現介面總是不通,這對這個vue的配置還是理解不到位,這回做了波實驗終於通透了
請求封裝思路
1、將axios後端請求和前端請求分離開
這點是用baseURL做到,前端不需要baseUrl,baseURL可以直接配置成後端的公共地址
如果不用代理而直接請求的話,可以是這個樣子:
let host = 'localhost';
let port = '8080';
// 建立axios例項
const service = axios.create({
// axios中請求配置有baseURL選項,表示請求URL公共部分,每個請求將會帶該部分
baseURL: "http://"+host+":"+port+process.env.VUE_APP_BASE_API,
//baseURL: process.env.VUE_APP_BASE_API,
// 超時
timeout: 10000
})
將host和port直接配置進url。但會有跨域問題。
2、將axios請求攔截,代理到後端指定地址
這個就是在vue.config.js中進行配置,通過target 和pathRewrite來重寫訪問後端的路徑,這樣在前端看不出來後端的實際訪問地址。
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: 'http://localhost:8080',
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
},
},
這裡直接將path重寫成空,實際的話可以根據後端的環境進行配置,比如後端配置context-path 為 /dev-api
server.servlet.context-path = /dev-api
這個時候,就可以直接rewrite到 /dev-api來實現整體的訪問變更。
3、通過nginx配置來實現跨域
這個直接參考之前的nginx配置就好
代理跨域配置
vue.config.js中配置devServer.proxy
前端應用和後端 API 伺服器沒有執行在同一個主機上,需要在開發環境下將 API 請求代理到 API 伺服器。這個問題可以通過 vue.config.js 中的 devServer.proxy 選項來配置
說明:
1、target 開始直接配置的localhost,沒有匹配到靜態檔案的請求都將走這個代理,走的mockjs,不存在跨域問題;新增埠號後,就產生了跨域問題。
2、changeOrigin 傳送請求頭中host會設定成target
3、pathRewrite 路徑重寫為""
4、process.env.VUE_APP_BASE_API 值為/dev-api
axios 請求配置
配置baseURL與vue.config.js為同一引數,確保axios所發請求均被代理到vue.config.js target配置地址
請求呼叫
測試交易中直接傳送請求
檢視前端請求URL
這裡的請求地址是:
Request URL: http://localhost/dev-api/getVerifyCode
但我們實際後端的地址並不是這個,這個請求將通過代理轉發至實際後端地址。
後端實際為:
http://localhost:8080/getVerifyCode
請求分析
對比前後端兩個url,可以很好的理解vue.config.js中的proxy配置。
前端請求為:http://localhost/dev-api/getVerifyCode
1、將axios請求path中帶有 /dev-api 的請求攔截
2、將對應請求轉發至target :localhost:8080
3、將請求路徑中的 /dev-api 重寫為 “”
4、請求實際為http://localhost:8080/getVerifyCode
相關文章
- vue跨域請求Vue跨域
- Vue——介面請求支援跨域Vue跨域
- 跨域請求跨域
- CORS跨域請求CORS跨域
- 關於vue請求laravel介面跨域問題VueLaravel跨域
- vue中axios請求資料VueiOS
- 允許跨域請求跨域
- vue請求後端資料和跨域問題Vue後端跨域
- vue中axios請求的封裝VueiOS封裝
- Vue中封裝axios傳送請求Vue封裝iOS
- Vue 使用 Axios 傳送請求的請求體問題VueiOS
- Cross-origin 跨域請求ROS跨域
- 同源政策與跨域請求跨域
- php 支援jsonp跨域請求PHPJSON跨域
- 跨域請求後端配置跨域後端
- NGINX如何配置跨域請求Nginx跨域
- vue 本地除錯跨域---帶cookies(axios)Vue除錯跨域CookieiOS
- axios 請求iOS
- vue2.0 axios post請求傳參問題(ajax請求)VueiOS
- vue axios路由跳轉取消所有請求VueiOS路由
- vue中使用axios傳送ajax請求VueiOS
- vue使用axios請求後端資料VueiOS後端
- 跨域之OPTION請求【轉載】跨域
- web 跨域請求安全問題Web跨域
- IE9 跨域請求相容IE9跨域
- 跨域是什麼?跨域請求資源有哪些方法?跨域
- vue(24)網路請求模組axios使用VueiOS
- axios + Laravel 5.7 跨域iOSLaravel跨域
- CROS跨域請求設定,偏重前端ROS跨域前端
- 使用cors完成跨域請求處理CORS跨域
- 如何使flask允許跨域請求Flask跨域
- SpringBoot解決跨域請求攔截Spring Boot跨域
- ajax跨域請求之CORS的使用跨域CORS
- options 請求跨域問題處理跨域
- Ajax+SpringMVC實現跨域請求SpringMVC跨域
- 13、HttpClient伺服器跨域請求HTTPclient伺服器跨域
- Vue3 跨域請求攜帶cookie操作並記錄cookieVue跨域Cookie
- Vue路由切換 & Axios介面取消重複請求Vue路由iOS