博主
258
258
258
258
专辑

第三十节 Vue解决axios跨域的问题

亮子 2021-12-21 19:49:15 6793 0 0 0

1、在vue项目的根目录创建vue.config.js

vue.config.js

代码如下:

module.exports = {
  devServer: {                //webpack-dev-server配置
      host : 'localhost',
      port : 8080,            //配置本项目运行端口
      proxy: {                //配置代理服务器来解决跨域问题
          '/api': {
              target: 'http://localhost:8010',      //配置要替换的后台接口地址
              changOrigin: true,                      //配置允许改变Origin
              pathRewrite: {
                  '^/api': ''
              }
          },
      }
  },
}

2、axios拦截器以及api封装

axios拦截器以及api封装

axios拦截器代码

// file:request.js
// 1、引入axios库
import axios from "axios"

// 2、创建axios实例
const service = axios.create({
    baseURL: '/api',  // api的base_url
    timeout: 5000  // 请求超时时间
})

// 3、请求拦截器
service.interceptors.request.use(
    config => {
        console.log("request url="+config.url)

        // 获取token,如果有token,就放入http的请求头里面
        let token = window.sessionStorage.getItem("token")
        if(token) {
            config.headers = {
                'token': token
            }
        }

        return config
    },
    error => {
        return Promise.reject(error)
    }
)

// 4、响应拦截器
service.interceptors.response.use(
    response => {
        // 定时刷新token
        console.log(response.data)
        return response
    },
    error => {
        return Promise.reject(error)
    }
)

export default service

api封装

// file:api.js
// 1、导入axios以及拦截器
import service from './request'

// 2、定义登录函数接口
export const login = (data) => {
    return service({
        url: '/user/loginByBody',
        method: 'post',
        data
    })
};

3、接口使用

    import {userList} from '../api/api.js'
    export default {
        data() {
            return {}
        },
        mounted() {
            userList().then(res=>{
                console.log(res);
            })
        },
        created() {
            console.log("create");
        },
        methods: {

        }
    }