Vue跨域實現原理(proxytable)
阿新 • • 發佈:2020-09-09
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實際上是將請求發給自己的伺服器,再由伺服器轉發給後臺伺服器,做了亦曾代理,因為不會出現跨域問題。