1. 程式人生 > 實用技巧 >Vue跨域實現原理(proxytable)

Vue跨域實現原理(proxytable)

1.1、使用proxyTable代理

檔案路徑如下,在專案根目錄下的config資料夾中的index.js中

配置程式碼如下

dev{
	proxyTable: {
      '/api': {
        target: 'http://192.168.0.1:200', // 要代理的域名
        changeOrigin: true,//允許跨域
        pathRewrite: {
          '^/api': '' // 這個是定義要訪問的路徑,名字隨便寫
        }
   }
}

使用時程式碼

 // /api/getMenu相當於*http://192.168.0.1:200/getMenu
 // /api相當於http://192.168.0.1:200
 this.$http.get("/api/getMenu", {
 }
 .then(res => {
 })
 .catch(function(error) {
 });

1.2、注意事項

以上面程式碼設定的為例,會把請求中所有帶有/api欄位的都替換掉,例如api/getMenu/api,前後兩個都會被替換,導致404等錯誤,在代理數量比較多的時候容易出現這個問題。

2、proxyTable原理

瀏覽器是禁止跨域的,但是服務端不禁止,在本地執行npm run dev等命令時實際上是用node運行了一個伺服器,因此proxyTable實際上是將請求發給自己的伺服器,再由伺服器轉發給後臺伺服器,做了亦曾代理,因為不會出現跨域問題。