本文要完成的是:运用vue-cli搭建的项目在开辟时设置跨域,上线后不做任何任何修正,接口也能够接见
浏览时候须要三分钟
production:产物 临盆环境
development:开辟 开辟环境
1.开辟环境设置跨域
- 运用东西:vue-cli自带的设置
- 设置目次 /config/index.js
//自行复制黏贴
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正不正确