目錄
一、全域設定axios
首頁 web前端 Vue.js 深析axios全域配置、攔截器和proxy跨域代理(圖文)

深析axios全域配置、攔截器和proxy跨域代理(圖文)

Aug 10, 2022 am 09:55 AM
axios

一、全域設定axios

1. 為什麼要全域設定 axios

在實際專案開發中,幾乎每個元件中都會用到axios 發起資料請求。此時會遇到以下兩個問題:

① 每個元件中都需要匯入 axios(程式碼臃腫)

② 每次發請求都需要填寫完整的請求路徑(不利於後期的維護)【相關建議:vue.js影片教學

深析axios全域配置、攔截器和proxy跨域代理(圖文)

2. 如何全域設定 axios

在 main.js 入口檔案中,透過 app.config.globalProperties 全域掛載 axios,範例程式碼如下:

深析axios全域配置、攔截器和proxy跨域代理(圖文)

深析axios全域配置、攔截器和proxy跨域代理(圖文)

#3.在 vue2 的專案中全域設定 axios深析axios全域配置、攔截器和proxy跨域代理(圖文)

需要在main.js 入口檔案中,透過Vue 建構函數的prototype 原型物件全域設定 axios

二、axios 攔截器深析axios全域配置、攔截器和proxy跨域代理(圖文)

1. 什麼是攔截器

攔截器(英文:Interceptors)會在每次發起 ajax 請求和得到回應的時候自動被觸發。

深析axios全域配置、攔截器和proxy跨域代理(圖文)

2. 設定請求攔截器

透過 axios.interceptors.request.use(成功的回呼, 失敗的回呼) 可以設定請求攔截器。範例程式碼如下:

深析axios全域配置、攔截器和proxy跨域代理(圖文)

#2.1 請求攔截器 – Token 認證

深析axios全域配置、攔截器和proxy跨域代理(圖文)

深析axios全域配置、攔截器和proxy跨域代理(圖文)


2.2 請求攔截器 – 展示 Loading 效果

借助element ui 提供的 Loading 效果組件


深析axios全域配置、攔截器和proxy跨域代理(圖文)

############################################################################################################################################################################## ###############3. 設定回應攔截器######透過 axios.interceptors.response.use(成功的回呼, 失敗的回呼) 可以設定回應攔截器。範例程式碼如下:############################展示Loading效果實戰範例:############# ##############三、proxy 跨域代理######1. 介面的跨域問題######解決跨域 ######## #1)、Cors(最標準的處理) 不需要前段人員做任何處理 只需要寫伺服器的人在伺服器裡面在回傳回應的時候加幾個特殊的回應頭######2)、Jsonp 最巧妙的解決辦法  借助了script標籤裡面的src屬性 在引入外部資的時候不受同源策略限制這個特點辦到的    在開發中很少用 因為需要前端後端人員共同完成 而且只能解決get請求的跨域問題 ######3)、代理伺服器######代理伺服器也是個伺服器 它的連接埠號碼和我們自身保持一致 兩台伺服器之間的交流不首同源策略限制 即這樣可解決跨域問題 所以在發送請求的時候連接埠號碼也是8080#########vue 專案運行的位址:http://localhost:8080/#######API 介面運行的位址:http://www.escook.cn/api/users######由於目前的API 介面沒有開啟CORS 跨域資源共享,因此預設情況下,上面的介面無法請求成功! #########################

2. 透過代理程式解決介面的跨域問題

透過vue-cli 所建立的專案在遇到介面跨域問題時,可以透過代理程式的方式來解決:

深析axios全域配置、攔截器和proxy跨域代理(圖文)

① 把axios 的請求根路徑設定為vue 專案的運作位址(介面請求不再跨域)

② vue專案發現請求的介面不存在,把請求轉交給proxy 代理

③ 代理程式把請求根路徑替換為devServer.proxy 屬性的值,發起真正的資料請求

④ 代理程式將請求到的數據,轉送axios

3. 在專案中設定 proxy 代理

步驟1,在main.js 入口文件中,把 axios 的請求根路徑改造為目前web 專案的根路徑:

深析axios全域配置、攔截器和proxy跨域代理(圖文)

#步驟2,在專案根目錄下建立vue.config.js 的設定文件,並宣告如下的配置:

深析axios全域配置、攔截器和proxy跨域代理(圖文)

#① devServer.proxy 提供的代理功能,僅在開發調試階段生效

② 項目上線發佈時,依舊需要API 接口伺服器開啟 CORS 跨域資源共享

使用方式一配置代理伺服器有兩個不完美的地方:

1、不能靈活的控制走不走代理伺服器

public資料夾相當於8080伺服器的根路徑(8080這台伺服器裡面有什麼就取決於public文件夾裡有什麼)當請求的資源8080自身有的時候  就不會將這個請求轉寄至5000伺服器

2、不能夠設定多個代理,只能將請求轉送給5000伺服器

深析axios全域配置、攔截器和proxy跨域代理(圖文)

使用方式二開啟代理伺服器  '/api' 請求前綴 

作用:當本地請求傳送至代理伺服器時 代理伺服器會來判 該請求的前綴是不是'/api',如果是 則發送請求(轉發請求至5000),如果不是 則不發送請求 可以靈活的控制走不走代理伺服器('/api'不是固定值,可自訂為'/hah' 等)

深析axios全域配置、攔截器和proxy跨域代理(圖文)

#前綴的攜帶位置:緊接在連接埠號

深析axios全域配置、攔截器和proxy跨域代理(圖文)

如果直接這麼請求的話 會導致404錯誤 因為發送請求到5050伺服器的時候攜帶的還是/api/ students, 5050伺服器有students但是沒有/api/students

加上這個設定才能保證代理伺服器發送到5050伺服器請求時 只發送了/students 從而拿到資料

深析axios全域配置、攔截器和proxy跨域代理(圖文)

ws作用:用於支援websocket

changeOrigin:(用於控制請求頭中host的值)

當changeOrigin:true時,代理伺服器會顯示自己也是5050伺服器

當changeOrigin:false時,代理伺服器表示自己是8080伺服器

#有時候5050伺服器會有些限制 所以這個配置項目最好設定為true。

ws和changeOrigin這兩個項目如果不寫的話 預設值也是true(在react中不寫為false)

以上是深析axios全域配置、攔截器和proxy跨域代理(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
在Vue應用程式中使用axios時出現「Uncaught (in promise) Error: Request failed with status code 500」怎麼辦? 在Vue應用程式中使用axios時出現「Uncaught (in promise) Error: Request failed with status code 500」怎麼辦? Jun 24, 2023 pm 05:33 PM

在Vue應用程式中使用axios是十分常見的,axios是一種基於Promise的HTTP客戶端,可以用於瀏覽器和Node.js。在開發過程中,有時會出現「Uncaught(inpromise)Error:Requestfailedwithstatuscode500」的錯誤提示,對於開發者來說,這個錯誤提示可能有些難以理解和解決。本文將會探討這

Vue中資料請求的選擇:Axios or Fetch? Vue中資料請求的選擇:Axios or Fetch? Jul 17, 2023 pm 06:30 PM

Vue中資料請求的選擇:AxiosorFetch?在Vue開發中,處理資料請求是一個非常常見的任務。而選擇使用哪種工具來進行資料請求,則是需要考慮的問題。在Vue中,最常見的兩種工具是Axios和Fetch。本文將會比較這兩種工具的優缺點,並給出一些範例程式碼來幫助你做出選擇。 Axios是一個基於Promise的HTTP客戶端,可以在瀏覽器和Node.

在Vue應用程式中使用axios時出現「Error: Network Error」怎麼解決? 在Vue應用程式中使用axios時出現「Error: Network Error」怎麼解決? Jun 25, 2023 am 08:27 AM

在Vue應用程式中使用axios時出現「Error:NetworkError」怎麼解決?在Vue應用程式的開發中,我們常常會使用到axios進行API的請求或資料的獲取,但是有時我們會遇到axios請求出現「Error:NetworkError」的情況,這時我們該怎麼辦呢?首先,需要了解「Error:NetworkError」是什麼意思,它通常表示網路連

在Vue應用程式中使用axios時出現「TypeError: Failed to fetch」怎麼辦? 在Vue應用程式中使用axios時出現「TypeError: Failed to fetch」怎麼辦? Jun 24, 2023 pm 11:03 PM

最近,在使用Vue應用程式開發過程中,我遇到了一個常見的問題:「TypeError:Failedtofetch」錯誤提示。這個問題出現在使用axios進行HTTP請求時,後端伺服器沒有正確回應請求時發生。這種錯誤提示通常表示請求無法到達伺服器,可能是由於網路原因或伺服器未回應造成的。出現這個錯誤提示後,我們該怎麼辦呢?以下是一些解決方法:檢查網路連接由於

Java axios與spring前後端分離傳參規範是什麼 Java axios與spring前後端分離傳參規範是什麼 May 03, 2023 pm 09:55 PM

一、@RequestParam註解對應的axios傳參方法以下面的這段Springjava程式碼為例,介面使用POST協議,需要接受的參數分別是tsCode、indexCols、table。針對這個Spring的HTTP接口,axios該如何傳參?有幾種方法?我們來一一介紹。 @PostMapping("/line")publicList

高效利用Vue和Axios實現前端資料的批次處理 高效利用Vue和Axios實現前端資料的批次處理 Jul 17, 2023 pm 10:43 PM

高效利用Vue和Axios實現前端資料的批次處理在前端開發中,資料的處理是一個常見的任務。當我們需要處理大量資料時,如果沒有有效的方法,處理資料將會變得十分繁瑣和低效。 Vue是一種優秀的前端框架,而Axios是一個流行的網路請求庫,它們可以協同工作來實現前端資料的批次處理。本文將詳細介紹如何有效利用Vue和Axios來進行資料的批次處理,並提供相關的程式碼範例

axios和SpringBoot前端怎麼呼叫後端介面進行資料交互 axios和SpringBoot前端怎麼呼叫後端介面進行資料交互 May 13, 2023 am 10:34 AM

一、介紹一個完善的系統,前後端互動是必不可少的,這個過程可以分成下面幾步:前端向後端發起請求後端接口接收前端的參數後,開始層層調用方法處理數據後端將最終資料回傳給前端介面前端請求成功後,將資料渲染至介面二、專案結構前端技術:axios後端技術:SpringBoot(這也無所謂,但你一定要有控制層的存取路徑,也就是所謂的請求位址對應的方法,可以用SSM框架,SSH框架,都可以)上面是大致的文件結構,相信大家後端的資料處理都沒問題,無非就是:控制層接收前端請求,呼叫對應的業務層介面方法業務層實現

怎麼使用vue3+ts+axios+pinia實現無感刷新 怎麼使用vue3+ts+axios+pinia實現無感刷新 May 25, 2023 pm 03:37 PM

vue3+ts+axios+pinia實作無感刷新1.先在專案中下載aiXos和pinianpmipinia--savenpminstallaxios--save2.封裝axios請求-----下載js-cookienpmiJS-cookie-s//引入aixosimporttype{AxiosRequestConfigig ,AxiosResponse}from"axios";importaxiosfrom'axios';import{ElMess

See all articles