vue3版本跨域 axios解决
- 先在根目录下(与src同级)新建vue.config.js文件
// vue.config.js
module.exports = {
outputDir: 'dist', // build之后的目录名称
assetsDir: 'assets', // 静态资源目录
lintOnSave: false, // 是否开启eslint
devServer: {
open: true, // 是否自动弹出浏览器页面
host: 'localhost',
port: '8080',
https: false, // 是否使用https协议
hotOnly: false, // 是否开启热更新
proxy: {
'/api': {
target: 'http://www.mxnzp.com', // 数据请求地址
ws: true, // 是否启用websockets
changeOrigin: true, // 是否开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
pathRewrite: {
'^/api': '', // 这里理解成用'/api'代替target里面的地址,比如要调用'http://127.0.0.1:8080/user/delete',就可以写成'/api/user/delete'
},
},
},
},
};
- 在main.js文件中引入axios 并添加配置;
Vue.prototype.$axios = axios;
axios.defaults.baseURL = '/api' // `/api${process.env.VUE_APP_BASE_URL}`;
axios.defaults.headers.post['Content-Type'] = 'application/json';
Vue.config.productionTip = false; // 阻止启动生产模式的消息
- 在组件中引入axios并使用;
import axios from 'axios';
原请求数据api:https://www.mxnzp.com/api/holiday/single/20191117
在组件中使用
axios.get(`/api/holiday/single/${this.year}${this.month}${this.day}`).then((res) => {
请求的时候不用再次添加域名