alreadyaxiosWeb 前端

axios 跨域请求(前后端分离)

2021-04-02  本文已影响0人  时光觅迹

与其说是 axios 跨域请求,我觉得不如说是 webpack server 跨域请求,因为这里的跨域请求实现,还是依托 webpack-dev-server 来完成的,并不是 axios 直接进行跨域请求。

跨域请求,除了需要在前端进行配置,还需在服务器端进行相应配置

一、引用 axios

main.js引入全局使用

import axios from 'axios'
Vue.prototype.$axios = axios

组件或页面中使用

methods: {
  testAxios1: function() {
    console.log('test');
    this.$axios({
      method: 'get',
      url: 'data/personData.json'
    })
    .then(function (response) {
      console.log(response)
    })
    .catch(function (error) {
      console.log(error)
    })
  }
}

二、axios配置开发环境跨域请求代理

1:打开config/index.js
在这里面找到proxyTable{},改为这样:

proxyTable: {
  '/api': {
    target: 'http://localhost:8085',//设置你调用的接口域名和端口号 别忘了加http
    changeOrigin: true,
    pathRewrite: {
      '^/api': ''//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
    }
  }
},

2、使用

methods: {
    testAxios1:function(){
        console.log('test');
        this.$axios({
            method: 'post',
            url: 'http://localhost:8085/screen/selCaugh'
        })
        .then(function (response) {
            console.log(response)
        })
        .catch(function (error) {
            console.log(error)
        })
    },
}

三、axios传参

Vue官方推荐组件 axios 默认就是提交 JSON 字符串,所以我们要以 json字符串直接拼接在 url 后面的形式,直接将 json 对象传进去就行了

let postData = {
  companyCode:'tur',
  userName:'123456789123456789',
  password:'123456'
}
axios.get('/api/yt_api/login/doLogin',{
  params: {
    ...postData
  }
}).then(function (response) {
  console.log(1)
  console.log(response)
}).catch(function (error) {
  console.log(error)
});
上一篇 下一篇

猜你喜欢

热点阅读