vue脚手架中配置代理跨域

1.几乎跨域是前端面试题中必问的  

每次这样问 一是问我们产生跨域的原因,解决的跨域的原理

原因无非就是浏览器的同源策略导致 不同源头的服务器地址 浏览器默认是不会使用回来的数据 记住并不是请求失败了 而是回来数据 浏览器根据同源策略原则 而不使用

解决方法:1 后端配合 写一个请求用来'欺骗'浏览器是是同源发来的数据  2.JSOPN方式跨域  这个同学最好还是知道它的原理为好

但是上面并不是我们今天要讲解的 

跨域问题往往都是客户端向服务器端发送请求导致 那么服务器向服务器发送请求就可以 那这个代理模式就根据这个来的

js中还有一种设计模式叫做代理模式 

我们客户端 中的 A  界面 向  B页面 请求数据 是不会产生 跨域问题  

这样我们 A是被代理界面  B是代理页面   A页面往服务器C发送请求  C将数据重定向到B页面  然后A请求B页面 这样A页面往C服务器的跨域问题就可以解决了 

笔者使用的 @vue/cli  4.* 版本上 在 vue.config.js中配置

module.exports = {

  devServer: {

    open: true,

    /* 使用代理 */

    proxy: {

      '/api': {

        target: 'http://localhost:8088/', //设置你调用的接口域名和端口号 别忘了加http

        changeOrigin: true, //允许跨域

        pathRewrite: {

          '^/api': '' // 这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://localhost:8090/users',直接写‘/api/users’即可

        }

      }

    }

  }

}

配置完 记得重启 服务器    这里让我们重新复习下 原生的ajax的写法

let url = '/api/users'    //  在写请求地址的 时候 直接   /api/users  就可以

      let xmlhttp

      if (window.XMLHttpRequest) {

        xmlhttp = new XMLHttpRequest()

      }else{

      xmlhttp=ActiveXObject(Microsoft.XMLHTTP)

}

      xmlhttp.open('get', url, true)

      xmlhttp.send()

      // 服务器端响应

      xmlhttp.addEventListener('readystatechange', () => {

        if (xmlhttp.status == 200 && xmlhttp.readyState == 4) {

          let obj = JSON.parse(xmlhttp.responseText)

          console.log(obj)

        }

      })

最后祝大家在工作中顺利解决 

发布了141 篇原创文章 · 获赞 64 · 访问量 9145

猜你喜欢

转载自blog.csdn.net/yunchong_zhao/article/details/104215418