vue開發環境配置跨域,一步到位

本文要實現的是:使用vue-cli搭建的項目在開發時配置跨域,上線後不作任何任何修改,接口也能夠訪問

閱讀時間須要三分鐘vue

production:產品 生產環境webpack

development:開發 開發環境ios

1.開發環境設置跨域

  • 使用工具:vue-cli自帶的配置
  • 配置目錄 /config/index.js

image-20190115222845702

//自行復制黏貼
proxyTable: {
  '/apis':{
    target: 'http://10.1.63.26:19080/',  // 後臺api
    changeOrigin: true,  //是否跨域
    // secure: true,
    pathRewrite: {
      '^/apis': ''   //須要rewrite的,
    }
  }
}

注意:以上配置只有在生產環境下有效,你打包以後就不起做用了web

這樣就存在一個問題,你的接口都是/apis開頭的,打包以後部署到服務器要去除/apis,才能正常訪問後臺接口,如何解決呢?vue-cli

2.生產環境設置跨域

使用工具 axios 中文文檔地址

思路

解決的思路是這樣的:axios

首先,axios的默認實例有一個baseURL的屬性,配置了baseURL以後,你訪問接口時就會自動帶上api

假設你vue-cli起了一個開發環境,地址爲http://localhost:8080
//例1 當不設置baseURL時
axios.get('/user')  //訪問/user至關於訪問 http://localhost:8080/user

//例2 
axios.defaults.baseURL='/apis'
axios.get('/user')  //訪問/user就至關於訪問 http://localhost:8080/apis/user

//例3
axios.defaults.baseURL='https://sbsb.com'
axios.get('/user')  //訪問/user就至關於訪問 https://sbsb.com/user

//例4
axios.defaults.baseURL='https://sbsb.com/apis'
axios.get('/user')  //訪問/user就至關於訪問 https://sbsb.com/apis/user

而後咱們要根據如今的環境是開發環境仍是生產環境,配置不一樣的baseURL跨域

//判斷是不是生產環境
var isPro = process.env.NODE_ENV === 'production' //process.env.NODE_ENV用於區分是生產環境仍是開發環境
//配置不一樣的baseURL
module.exports = {
    baseURL: isPro ? 'http://sbsb.com:8888/' : '/apis'
}

process.env.NODE_ENV用於區分是生產環境仍是開發環境,這個值是webpack設置的服務器

動手操做

假設後臺api的rul是 http://sbsb.com:8888/

首先在/config目錄下新建一個文件,我這裏叫api.config.js
寫入如下代碼工具

//判斷是不是生產環境
var isPro = process.env.NODE_ENV === 'production' //process.env.NODE_ENV用於區分是生產環境仍是開發環境
//根據環境不一樣導出不一樣的baseURL
module.exports = {
    baseURL: isPro ? 'http://sbsb.com:8888/' : '/apis'
}

而後,在main.js中引入axios和剛纔那個文件

//main.js
import Vue from 'vue'
import axios from 'axios'
import apiConfig from '../config/api.config.js'
axios.defaults.baseURL=apiConfig.baseURL
//axios的其餘配置...

這樣配置以後,打包部署到服務器上也不用再手工去除/apis

若是配置過程當中出現了問題,本身調試,看看訪問的url正不正確

相關文章
相關標籤/搜索