前后端分离跨域问题

本文介绍了在Vue.js项目中如何通过npm安装axios,并在main.js中引入并设置全局实例。接着详细讲解了在vue.config.js中配置代理以解决跨域问题,以及在组件中根据不同请求前缀调用axios进行数据获取。通过示例代码展示了如何在模板中触发axios请求,并处理响应数据。
摘要由CSDN通过智能技术生成

1.在项目中安装axios

npm install axios --save(安装并且在package.json中写入依赖)

2.在main.js引入axios

import axios from 'axios'

3.在main.js写入vue实例

Vue.prototype.$axios = axios

4.config/indes.js写入配置代理

    proxyTable: {
        '/runoob': {
            // 此处的写法,目的是为了 将 /api 替换成 https://www.baidu.com/
            target: 'https://www.runoob.com',
            // 允许跨域
            changeOrigin: true,
            ws: true,
            pathRewrite: {
                '^/runoob': ''
            }
        },
        '/baidu': {
            // 此处的写法,目的是为了 将 /api 替换成 https://www.baidu.com/
            target: 'https://www.baidu.com',
            // 允许跨域
            changeOrigin: true,
            ws: true,
            pathRewrite: {
                '^/baidu': ''
            }
        }
    },

5.根据不同的请求前缀选择不同的代理

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <button @click="runoobAxios">TestAxios</button>
    <button @click="baiduAxios">baiduAxios</button>
  </div>
</template>

<script>
export default {
  name: 'Mixins',
  data () {
    return {
      msg: 'vue.js混入'
    }
  },
  methods: {
    baiduAxios () {
      // 由于 main.js 里全局定义的 axios,此处直接使用 $axios 即可。
      // 由于 main.js 里定义了每个请求前缀,此处的 / 即为 /baiidu,
      // 经过 vue.config.js 配置文件的代理设置,会自动转为 https://www.baidu.com/,从而解决跨域问题
      this.$axios.defaults.baseURL = '/baidu'
      this.$axios.get('/').then(response => {
        if (response.data) {
          console.log(response.data)
        }
      })
        .catch(errer => {
          alert('请求失败')
        })
    },
    runoobAxios () {
      // 由于 main.js 里全局定义的 axios,此处直接使用 $axios 即可。
      // 由于 main.js 里定义了每个请求前缀,此处的 /try/ajax/json_demo.json 即为 https://www.runoob.com/runoob/try/ajax/json_demo.json,
      // 经过 index.js 配置文件的代理设置,会自动转为 https://www.baidu.com/,从而解决跨域问题
      this.$axios.defaults.baseURL = '/runoob'
      this.$axios({
        url: '/try/ajax/json_demo.json'
      })
        .then(response => {
          if (response.data) {
            console.log(response.data)
          }
        })
        .catch(errer => {
          alert('请求失败')
        })
    }
  }
}
</script>

注意可以在main.js中设置全局前缀:

Axios.defaults.baseURL = '/api'// 使每次请求都会带一个 /api 前缀 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值