vue-cli3 中跨域解決方案


此方案只能用於開發環境,線上最好設置同源策略(遇到個后端,裝你媽批)

前后端不在同一服務器的情況下,前端要訪問后端API,可通過在vue.config.js中配置代理服務器。

0:前提條件

1:安裝vue-lic

2:安裝axios  用於發送請求。

 

1:將任何未知請求轉發到代理服務器

如:

前端地址:127.0.0.1

后端地址:127.0.0.2

當訪問地址為 127.0.0.1/api,沒有匹配到這地址,那么就會被轉發到代理服務器127.0.0.2/api

module.exports={
    devServer:{
        proxy: "http://www.acfun.cn"
    }
}

 

2:多代理控制

更多代理服務配置項搜索http-proxy-middleware查看

module.exports = {
    devServer: {
        proxy: {
            '/search': {    // search為轉發路徑
                target: 'http://www.acfun.cn',  // 目標地址
                ws: true, // 是否代理websockets
                changeOrigin: true   // 設置同源  默認false,是否需要改變原始主機頭為目標URL,               
            }
        }
    }
};

 

如:

當前訪問地址為  xxx.xxx.xxx/search時,就會被轉發到代理服務器http://www.acfun.cn/search

xxx.xxx.xxx/search -> http://www.acfun.cn/search

 

3:實例

api.js 文件(主要用於全局配置)

import Axios from "axios";

let http = Axios.create({
    timeout: 3000,   //超時配置 3秒
    responseType: 'json',   // 響應數據格式
    responseEncoding: 'utf8',  // 響應數據編碼
});

export default http;

 

入口文件  main.js

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import http from "./api";   // 引用axios全局配置

Vue.config.productionTip = false;

Vue.prototype.$http = http;   // 添加原型方法,這樣創建的對象就自帶該方法了。

new Vue({
    router,
    render: h => h(App)
}).$mount("#app");

 

vue.config.js 配置文件

更多代理服務配置項搜索http-proxy-middleware查看

module.exports = {
    devServer: {
        proxy: {
            '/search': {
                target: 'http://www.acfun.cn',
                ws: true,//是否代理websockets
                changeOrigin: true   // 設置同源  默認false,是否需要改變原始主機頭為目標URL
            }
        }
    }
};

 

然后在vue實例對象中直接訪問$http方法就行。

 

個人項目

淘寶天貓粉絲專享優惠券


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM