首页 > 其他分享 >通过Vue解决跨域问题(proxy配置代理)【转载】

通过Vue解决跨域问题(proxy配置代理)【转载】

时间:2023-02-14 17:46:23浏览次数:57  
标签:log Vue console 请求 proxy error http localhost 跨域

当我们在用本机去找服务器要数据时会产生跨域问题,所以利用vue-cli去开启一个代理服务器。

方法一:

在vue.config.js中添加如下配置

//开启代理服务器(方式一)
   devServer: {
//请求服务器的地址
   proxy: 'http://localhost:5000'
  }

配置成功之后必须要重新启动脚手架,否则不会开启代理服务器

请求时:

axios.get("http://localhost:8081/students").then(
        (response) => {
          console.log("请求成功了", response.data);
        },
        (error) => {
          console.log("请求失败了", error.message);
        }
      );

优点:配置简单,当请求资源时直接发给前端(8080)即可

缺点:不能配置多个代理,只能配置一个代理服务器,不能灵活的控制请求是否走代理。

工作方式:按照上述配置代理,当请求资源不存在时,请求会转发给服务器(优先匹配前端资源)

方法二:

在vue.config.js中添加如下配置

//开启代理服务器(方法二)
    devServer: {
        proxy: {
            //  '/yu'为请求前缀,用于控制是不是走代理,想走代理时就在请求前缀前边加上这个请求前缀
            '/yu': {
                target: 'http://localhost:5000',
                pathRewrite: { "^/yu": "" }, //重写路径  匹配以/yu为开头的路径都变为空字符串 
                ws: true, //用于支持websocket
                changeOrigin: true //用于控制请求头中的host值
            },
            '/demo': {
                target: 'http://localhost:5001',
                pathRewrite: { "^/demo": "" },
                ws: true, //用于支持websocket
                changeOrigin: true //用于控制请求头中的host值
            },
        }
    }

请求时:

请求前缀必须跟着端口号

getStudents() {
      axios.get("http://localhost:8081/yu/students").then(
        (response) => {
          console.log("请求成功了", response.data);
        },
        (error) => {
          console.log("请求失败了", error.message);
        }
      );
    },
    getCars() {
      axios.get("http://localhost:8081/demo/cars").then(
        (response) => {
          console.log("请求成功了", response.data);
        },
        (error) => {
          console.log("请求失败了", error.message);
        }
      );
    },

优点:可以配置多个代理,灵活的控制请求是否走代理

缺点:配置略繁琐,请求资源时必须加前缀

 

标签:log,Vue,console,请求,proxy,error,http,localhost,跨域
From: https://www.cnblogs.com/ysx215/p/17120399.html

相关文章

  • vue---day01与day02
    上节回顾#1jwt源码分析 -签发: 登录----》ObtainJSONWebToken--->post--->serializer.is_valid()--->走了校验---》正常登录逻辑可以拿到序列化类的validate中写-......
  • Vue3使用vue-router如何实现路由跳转与参数获取
    //跳转传参import{useRouter,useRoute}from'vue-router';constrouter=useRouter()constroute=useRoute()//新开页functionjump(id){consturl=router.......
  • vue实现自定义多选按钮
    html部分<div:class=""getSxxClass(item)v-for="(item,index)indata.sxxList":key="index"@click="sxxchangeQuery(item)"></div>js部分constdata=reactive......
  • Vue keep-alive缓存路由信息
    在不使用keep-alive时,通过路由跳转到另一组件上时,上一个组件会被vue销毁,在次进入,页面会保持初始状态,不会对用户的更改保留,如果需要包作在某组件上的更改,就可以使用keep-aliv......
  • vue路由的使用,命名,参数,范式,嵌套,动态匹配
    基本使用:1,让Vue使用该VueRouter创建,Vue.use(VueRouter);2,创建router对象varrouter=newVueRouter({});3,在创建的router对象中配置路由对象,路由匹配的规则,var......
  • Vue 组件传值方法5,利用$parent和$Children
    实现思想:利用每个组件的属性来传值,即每个组件都有Children等属性,根据这些属性找到要找的组件,对其进行操作,比如Vue实例vm的父级没有,子组件在这里有App和App下的Son,这些都是......
  • Vue组件传值方法4利用provide和inject
    父组件中设置provide可以设置多个属性,在它的子组件中设置inject接收父组件:provide:{for:'AppPassValue',}子组件:data(){return{......
  • drf的总结与前端vue框架了解
    drf的总结与前端vue框架了解一、drf知识点整合1、drf入门及规范#1drf入门规范-前后端分离模式-前后端混合-postman-restful规范-drf:django......
  • 高德地图手动实现轨迹,vue
    预览效果1、高德地图的官网使用的是web端,jsapi;https://lbs.amap.com/api/jsapi-v2/summary2、准备https://lbs.amap.com/api/jsapi-v2/guide/abc/prepare注册账号—......
  • vuecli实现仿写饿了么
    ​​点击github获取代码​​仿写饿了么是一个不错的用来锻炼vue的方式,我仿写的饿了么还是比较浅显的,没有使用饿了么提供的api,数据就是自己手写的几条json用json-server打开,......