vue配置axois多环境跨域访问

本文介绍如何在Vue项目中根据不同的开发环境(开发、演示、正式)配置Axios的服务器路径,并实现跨域访问。首先,安装Axios;然后,在main.js和vue.config.js中设置配置;接着,在src-common/config文件夹下创建各环境的配置文件(如demo.js、product.js、test.js),并在index.js中作为入口;最后,在http.js中引入配置并应用到Axios,以及在main.js中启用http.js使配置生效。详细讲解了Axios跨域请求的实现方法。

需求:项目的开发环境、演示环境和正式环境在不同的服务器,因此需根据需要自动配置axois的服务器路径,同时也要配置跨域访问

1、项目中安装axois 

npm install axios --save

2、配置axois 

在main.js文件中添加

import axios from 'axios' //引入axios
Vue.prototype.axios = axios;

在vue.config.js中配置多服务器

在vue.config.js中配置多服务器跨域

 devServer: {
        port: 8888, // 端口号
        proxy: {
            '/apis': {
                target: 'http://192.168.50.111:8088/', // target host
                ws: true, // proxy websockets 
                changeOrigin: true, // needed for virtual hosted sites
                pathRewrite: {
                    '^/apis': '' // rewrite path
                }
            },
            '/api2s': {
                target: 'http://192.168.50.107:8088/', // target host
                ws: true, // proxy websockets 
                changeOrigin: true, // needed for virtual hosted sites
                pathRewrite: {
                    '^/api2s': '' // rewrite path
                }
            },
            '/api3s': {
                target: 'http://192.168.50.106:8088/', // target host
                ws: true, // proxy websockets 
                changeOrigin: true, // needed for virtual hosted sites
                pathRewrite: {
                    '^/api3s': '' // rewrite path
                }
            }}
}}

在src-common下新建config文件夹,文件夹下新建开发、演示和测试环境下具体的配置文件,填写具体环境的配置,将其与配置文件中的地址关联

demo.js 演示环境

module.exports = {
    // 演示服务器
    api: {
        host: '192.168.50.107',
        port: '8888',
        protocol: 'http',
        url: "api3s"
    }
}

product.js 正式环境

module.exports = {
    //正式服务器
    api: {
        host: '192.168.50.106',
        port: 8088,
        protocol: 'http',
        url: "api3s"
    }
}

test.js 开发测试环境

module.exports = {
    // 开发测试服务器
    api: {
        host: '192.168.50.111',
        port: 8088,
        protocol: 'http',
        url: "apis"
    }
}

index.js将服务器配置文件作为不同环境的入口文件

/**
 * 项目配置不同的环境服务器地址的入口文件
 */

let apiServer = {};

switch (process.env.NODE_ENV) {


    case 'production':
        apiServer = require('./product.js')
        break;
    case 'demo':
        apiServer = require('./demo.js')
        break;
    case 'development':
        apiServer = require('./test.js')
        break;
    case 'test':
        apiServer = require('./test.js')
        break;
}

export const API_SERVER = {
    default: apiServer.api.url //配置了跨域
        /* default: `${apiServer.api.protocol}://${apiServer.api.host}:${apiServer.api.port || ''}` */
}

在src目录下新建http.js,引入以上配置入口文件,将配置作用到axios上

import axios from 'axios'
import { API_SERVER } from './common/config'

//请求初始化配置
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8';
axios.defaults.headers.post['Access-Control-Allow-Origin'] = '*';


axios.defaults.baseURL = API_SERVER.default;
console.log("axios.defaults.baseURL" + axios.defaults.baseURL);

在main.js文件中引入http.js文件,使配置最终生效

axios 跨域请求具体调用方式

     /**
     * 查询某一气象类别
     * @param {json}    data     选择的节点对应的值
     */
    sch_sk(data) {
        var  p={//参数
          typeCode:data.imgSk
        }
         var url = api.commonWea.getCmaImg;//请求url
         this.axios
        .get(url, {
          params: p
        })
        .then(function(rst) {
            if(rst){
               alert("ok");
            }
        })
        .catch(function(error) {
            alert("error");
        }); 
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值