vue开辟环境设置跨域,一步到位

本文要完成的是:运用vue-cli搭建的项目在开辟时设置跨域,上线后不做任何任何修正,接口也能够接见

浏览时候须要三分钟

production:产物 临盆环境

development:开辟 开辟环境

1.开辟环境设置跨域

  • 运用东西:vue-cli自带的设置
  • 设置目次 /config/index.js

《vue开辟环境设置跨域,一步到位》

//自行复制黏贴
proxyTable: {
  '/apis':{
    target: 'http://10.1.63.26:19080/',  // 背景api
    changeOrigin: true,  //是不是跨域
    // secure: true,
    pathRewrite: {
      '^/apis': ''   //须要rewrite的,
    }
  }
}

注重:以上设置只要在临盆环境下有用,你打包以后就不起作用了

如许就存在一个题目,你的接口都是/apis开首的,打包以后布置到服务器要去除/apis,才一般接见背景接口,怎样处理呢?

2.临盆环境设置跨域

运用东西 axios
中文文档地点

思绪

处理的思绪是如许的:

起首,axios的默许实例有一个baseURL的属性,设置了baseURL以后,你接见接口时就会自动带上

假定你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正不正确

    原文作者:hyangteng
    原文地址: https://segmentfault.com/a/1190000017905030
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞