目錄
直接請求和代理請求的區別
首頁 web前端 前端問答 vue-cli 代理請求原理

vue-cli 代理請求原理

May 25, 2023 am 09:51 AM

Vue 是一個流行的 JavaScript 框架,它可以用來建立互動式的 Web 應用程式。在開發過程中,我們通常會用到 vue-cli 來初始化一個基本的 Vue 專案。 vue-cli 是 Vue 官方提供的鷹架工具,它提供了許多方便的功能,例如專案初始化、打包、發布等。

但是,在開發過程中我們可能會遇到一個問題:跨域請求。由於瀏覽器的同源策略,當我們在前端 Ajax 發送請求時,只能請求同一網域下的伺服器資源,而不能請求其他網域的伺服器資源。這個時候,我們可以透過 vue-cli 中的代理請求來解決這個問題。

那麼,vue-cli 中的代理請求是如何實現的呢?

直接請求和代理請求的區別

在了解代理請求的原理之前,我們需要了解直接請求和代理請求之間的差異。當我們在開發過程中直接透過Ajax 請求存取後台服務時,請求會直接從前端發送到後端,如下圖所示:

vue-cli 代理請求原理

##這種方式會涉及到跨域問題。如果後端介面沒有設定跨網域回應頭,那麼瀏覽器就會禁止前端發起 AJAX 請求,導致請求失敗。

而在 vue-cli 中,我們會透過代理請求來解決這個問題。代理請求的基本想法是,將請求傳送到本機伺服器,然後由本機伺服器將請求轉送至後端伺服器。

vue-cli 代理請求原理

vue.config.js 中的代理程式設定

#在vue-cli 專案中,我們可以透過設定vue.config.js 檔案來設定代理請求。在該檔案中,我們可以設定

devServer 選項,透過設定 proxy 物件進行代理配置。以下是一個簡單的範例:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true
      }
    }
  }
}
登入後複製

在上述代理程式設定中,我們將

/api 路徑下的請求都會轉送至本機的http://localhost:8080 地址。

其中,

changeOrigin 選項用於控制是否需要更改請求頭中原始主機名稱。

proxy 物件中,我們可以設定多個代理位址,例如:

module.exports = {
  devServer: {
    proxy: {
      '/api1': {
        target: 'http://localhost:8081',
        changeOrigin: true
      },
      '/api2': {
        target: 'http://localhost:8082',
        changeOrigin: true
      }
    }
  }
}
登入後複製

這裡的

/api1/api2 分別代表要轉送的請求路徑, target 屬性指定了要轉送到的伺服器位址。

實作原理

在了解了代理請求的配置後,我們來看看代理請求的實作原理。

首先,當我們在前端發起請求時,請求會先被傳送到本機伺服器。本機伺服器接收到請求後,會對請求進行一系列處理,包括修改請求頭、修改請求路徑等。然後,將處理過的請求轉送到後端伺服器上。

流程圖如下:

vue-cli 代理請求原理

要注意的是,在本機伺服器中,我們需要設定代理中間件,例如

http-proxy- middleware。代理中間件是一個類似於回應請求的攔截器,用於控制請求過程並修改請求內容。我們可以透過配置代理中間件來實現請求的代理轉發。

總結

透過上述的介紹,我們了解了 vue-cli 中的代理請求原則。代理請求是一種在前端解決跨網域問題的方法,透過將請求轉送至本機伺服器,再由本機伺服器將請求轉送至後端伺服器,達到跨網域請求的效果。在 vue-cli 中,我們可以透過設定 vue.config.js 檔案來設定代理請求,從而實現前端的跨域請求。

以上是vue-cli 代理請求原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
兩個點博物館:所有展覽以及在哪裡可以找到它們
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)

解釋懶惰加載的概念。 解釋懶惰加載的概念。 Mar 13, 2025 pm 07:47 PM

解釋懶惰加載的概念。

什麼是使用效果?您如何使用它執行副作用? 什麼是使用效果?您如何使用它執行副作用? Mar 19, 2025 pm 03:58 PM

什麼是使用效果?您如何使用它執行副作用?

反應和解算法如何起作用? 反應和解算法如何起作用? Mar 18, 2025 pm 01:58 PM

反應和解算法如何起作用?

咖哩如何在JavaScript中起作用,其好處是什麼? 咖哩如何在JavaScript中起作用,其好處是什麼? Mar 18, 2025 pm 01:45 PM

咖哩如何在JavaScript中起作用,其好處是什麼?

JavaScript中的高階功能是什麼?如何使用它們來編寫更簡潔和可重複使用的代碼? JavaScript中的高階功能是什麼?如何使用它們來編寫更簡潔和可重複使用的代碼? Mar 18, 2025 pm 01:44 PM

JavaScript中的高階功能是什麼?如何使用它們來編寫更簡潔和可重複使用的代碼?

說明每個生命週期方法及其用例的目的。 說明每個生命週期方法及其用例的目的。 Mar 19, 2025 pm 01:46 PM

說明每個生命週期方法及其用例的目的。

React的性能優化技術是什麼是什麼? React的性能優化技術是什麼是什麼? Mar 18, 2025 pm 01:57 PM

React的性能優化技術是什麼是什麼?

什麼是Usecontext?您如何使用它在組件之間共享狀態? 什麼是Usecontext?您如何使用它在組件之間共享狀態? Mar 19, 2025 pm 03:59 PM

什麼是Usecontext?您如何使用它在組件之間共享狀態?

See all articles