美文网首页前端开发那些事儿
Vue跨域Access to XMLHttpRequest at

Vue跨域Access to XMLHttpRequest at

作者: 兰觅 | 来源:发表于2021-01-05 09:13 被阅读0次

跨域提示信息

Access to XMLHttpRequest at 'http://192.168.1.2:9090/api/bbs/bbs/art/' from origin 'http://localhost:8083' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed

跨域提示

什么是跨域

跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。

  • 这里列举一个经典的列子:
#协议跨域
http://a.baidu.com 访问 https://a.baidu.com;
#端口跨域
http://a.baidu.com:8080 访问  http://a.baidu.com:80;
#域名跨域
http://a.baidu.com  访问  http://b.baidu.com;

解决跨域方法

  • 1.前提这里是使用vue脚手架生成的标准项目为准。一般在项目config目录下面有个index文件
module.exports = {
    dev: {
        // Paths
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
        proxyTable: {
            '/api': {
                target: 'http://192.168.1.2:9090', //后端接口地址
                changeOrigin: true,  //是否允许跨越
                pathRewrite: {
                    '^/api': '/api',        //重写,
                }
            }
        },
 host: 'localhost',   //本地ip
 port: 8083,
            ...

后端请求地址是http://192.168.1.2:9090,所有api的接口url都以/api开头。
所以首先需要匹配所有以/api开头的.然后修改target的地址为http://192.168.1.2:9090
最后修改pathRewrite地址:将前缀'^api'转为'/api'
如果本身的接口地址就有'/api'这种通用前缀,就可以把pathRewrite 删掉。注意这个方式只能在开发环境中使用。

  • 2.在main.js文件,配置一下axios.defaults.baseURL = '/api'这样就可以保证动态的匹配生产和开发环境的定义前缀了,代码如下:
/*
入口JS
*/
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import axios from 'axios'

Vue.prototype.$axios = axios
axios.defaults.baseURL = '/api'        //关键代码
Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

3.组件中axios请求数据使用:

<template>
 
</template>

<script>
    import Footer from './components/Footer/Footer.vue'
    export default {
        created() {
            const url = '/api/bbs/bbs/art'
            this.$axios.get(url).then(res => {
                console.log(res)
            })
        },
    }
</script>

4.重新启动项目之后,已经解决了跨域问题

相关文章

网友评论

    本文标题:Vue跨域Access to XMLHttpRequest at

    本文链接:https://www.haomeiwen.com/subject/oqkioktx.html