vue+node项目中, axios跨域问题配置解决方案

399 阅读1分钟

1.折磨了两个多小时 ,终于找到一个适合自己项目的方式,解决了跨域问题,并且记录一下 在前端项目工程中:

1、安装命令:

cnpm instal axios --save

2、在前端根目录下创建一个文件vue.config.js 添加如下内容

'use strict';
const baseUrl = 'http://XXX.XXX.XX.X:1001'

module.exports = {
    devServer: {
        //跨域请求配置
        proxy: {
            '/api': {
                target: baseUrl,
                changeOrigin: true,//是否跨域 开启代理:在本地创建一个虚拟服务器
                ws: true,//是否代理websockets
                secure: false,//如果是https接口,需要配置这个参数
                pathRewrite: { '^/api': '/' } //重写路径
            }
        },
    },
};

3、在main.ts中添加

import Axios from "axios";

Axios.defaults.withCredentials = true;

// step2:把axios挂载到vue的原型中,在vue中每个组件都可以使用axios发送请求,
// 不需要每次都 import一下 axios了,直接使用 $axios 即可
Vue.prototype.$axios = Axios;

// step3:使每次请求都会带一个 /api 前缀 
Axios.defaults.baseURL = '/api';

4、在页面中调用


import axios from "axios";

@Component
export default class Home extends Vue {
  data1 = [];
  mounted() {
    // 在生命周期中调用 getRenderer 方法
    this.queryUser();
  }
  async queryUser() {
    await axios
      .get("/user")
      //then获取成功;response成功后的返回值(对象)
      .then((response) => {
        console.log(response);
        this.data1 = response.data.user;
      })
      //获取失败
      .catch((error) => {
        console.log(error);
        alert("网络错误,不能访问");
      });
  }

5、最重要的是,修改配置后一定 一定 一定 要重新启动项目,同时保证 后端项目工程是启动的状态 ,即可完成跨域