本地运行vue项目跨域问题完美解决方案(使用axios)


在vue cli3中的配置
在package.json同级目录下新建vue.config.js文件

//vue.config.js
module.exports = {
  devServer: {
    proxy: {
      '/api': {                                //   以'/bpi'开头的请求会被代理进行转发,如果要转发所有则使用:/**
        target: 'http://localhost:8081',       //   要发向的后台服务器地址  如果后台服务跑在后台开发人员的机器上,就写成 `http://ip:port` 如 `http:192.168.12.213:8081`   ip为后台服务器的ip
        changeOrigin: true ,   //在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
        pathRewrite:{  // 路径重写,
          '^/api': ''  // 替换target中的请求地址,也就是说以后你在请求http://api.douban.com/v2/XXXXX这个地址的时候直接写成/api即可。
        }                 
      }
    }
  }
}

在main.js中,配置数据所在服务器的前缀(即固定部分),代码如下:

// 项目入口,配置全局vue
import Vue from 'vue'
import VueRouter from './router/routes.js'
import Store from './store/index.js'
 
import './assets/less/index.less'
import App from './App.vue'
 
 
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
 
import axios from 'axios'
Vue.prototype.$axios = axios
axios.defaults.baseURL = '/api'  //关键代码
Vue.config.productionTip = false
 
 
Vue.use(ElementUI);
 
new Vue({
    router:VueRouter,
    store:Store,
    template:'<App/>',
    components: {App}
}).$mount('#app')
 
// 默认进入商品模块
// VueRouter.push({ path: '/home' })

关键代码:axios.defaults.baseURL = '/api',作用是我们每次发送的请求都会带一个/api的前缀。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM