zoukankan      html  css  js  c++  java
  • 本地axios处理跨域问题(仅针对vue-cli3以下的开发环境,项目中配置文件是config->index.js)

    首先npm安装好axios,其次在main.js中引入:

    1 import axios from 'axios'
    2 
    3 Vue.prototype.$axios = axios    //把axios挂载到vue的原型中,在vue中每个组件都可以使用axios发送请求
    4 Vue.prototype.HOME = '/api'    //重要在于这里,Vue.prototype.HOME = '/api'是一个定值,默认指向localhost,所有修改指向路径为'/api',配置文件index.js定义的可跨域路径

    第二步就是修改上述所说的config>index.js配置文件:

     1 module.exports = {
     2   dev: {
     3     // Paths
     4     assetsSubDirectory: 'static',
     5     assetsPublicPath: '/',
     6     proxyTable: {     //axios跨域处理
     7       '/api': {       //此处并非和url一致
     8         target:'http://192.168.2.80:8081/',
     9         changeOrigin:true, //允许跨域
    10         pathRewrite:{
    11           '^/api': ''
    12         }
    13       }
    14     }
    15 }
    16 ....以下省略
    17 }

    最后就是在需要跨域的文件中操作了:

     1     created() {
     2       var url = this.HOME + '/index***ds/getFe***List';  //HOME变量为已挂载的可跨域域名,这里将其拼接完,成为一个完整路径
     3       this.$axios({  //this代表vue对象,之前在入口文件中把axios挂载到了vue中,所以这里直接用this.$axios调用axios对象
     4         method: 'post',
     5         url: url,
     6         data: {feedType: 1, page: 1, pagesize: 10}
     7       }).then(function (res) {
     8         console.log(res);
     9       }).catch(function (err) {
    10         console.log(err);
    11       })
    12     },

    这样就可以成功跨域,拿到后台返回的数据了。

    需要注意的是:在Vue项目中如果我们修改了config里面的文件,请千万要重新启动项目,重新启动项目,重新启动项目,不然一定会报错。

    当然,这只是在本地可以正常跨域访问接口,线上的话,还需要和后台协商处理。线上推荐用Nginx。(后续会发布相关知识)

  • 相关阅读:
    RabbitMQ 内存控制 硬盘控制
    Flannel和Docker网络不通定位问题
    kafka集群扩容后的topic分区迁移
    CLOSE_WAIT状态的原因与解决方法
    搭建Harbor企业级docker仓库
    Redis哨兵模式主从持久化问题解决
    mysql杂谈(爬坑,解惑,总结....)
    Linux的信号量(semaphore)与互斥(mutex)
    SIP协议的传输层原理&报文解析(解读rfc3581)(待排版) && opensips
    SIP协议的传输层原理&报文解析(解读RFC3261)(待排版)&&启动
  • 原文地址:https://www.cnblogs.com/liu01321/p/13533099.html
Copyright © 2011-2022 走看看