• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

vue3的配置代理

武飞扬头像
qq_45334976
帮助1

学新通

 如图,配置代理就是在客户端与服务器中充当中介的角色

目录

关于配置代理,首先我们的要知道为什么要配置代理,配置代理做了什么事情

一、跨域是什么

二、如何解决

三、配置代理案例

       1. 下面是我自己在后端尝试解决跨域的例子

2.然后在vue中解决跨域是在vue-cli中的 vue.config.js中配置代理,


关于配置代理,首先我们的要知道为什么要配置代理,配置代理做了什么事情

        1.首先,为什么要配置代理。 大家应该都写过axios请求吧,当我们向后台服务器发送axios请求的时候,有时候会在浏览器中报错这样一段话

学新通

 这就是由于我们发送的请求跨域了, 跨域并不是 就 请求发不出去 或  服务器的响应接受不到,而是 由于 浏览器 服务器发送的请求 跨域了,导致 浏览器在接受到服务器的响应数据后拦截了下来,不给你。

        所以 简单点说 , 配置代理就是为了让浏览器接受到服务器的数据后发送给我们。

同源策略分为以下两种:

  1. DOM 同源策略:禁止对不同源页面 DOM 进行操作。这里主要场景是 iframe 跨域的情况,不同域名的 iframe 是限制互相访问的。
  2. XMLHttpRequest 同源策略:禁止使用 XHR 对象向不同源的服务器地址发起 HTTP 请求。       

关于详细的大家可以看  什么是同源策略? - 知乎 (zhihu.com)学新通https://zhuanlan.zhihu.com/p/66047383

        2.配置代理做了什么。配置代理就是找一台代理服务器,在你发送请求的时候做一个中介,浏览器先将请求发送给代理服务器,代理服务器再将请求转发给后台的数据服务器。代理服务器 要和 你真正访问的 后台服务器是同源的。

关于跨域我给大家从vue的文档中截取的这么一段

一、跨域是什么

跨域本质是浏览器基于同源策略的一种安全手段

同源策略(Sameoriginpolicy),是一种约定,它是浏览器最核心也最基本的安全功能

所谓同源(即指在同一个域)具有以下三个相同点

  • 协议相同(protocol)
  • 主机相同(host)
  • 端口相同(port)

反之非同源请求,也就是协议、端口、主机其中一项不相同的时候,这时候就会产生跨域

一定要注意跨域是浏览器的限制,你用抓包工具抓取接口数据,是可以看到接口已经把数据返回回来了,只是浏览器的限制,你获取不到数据。用postman请求接口能够请求到数据。这些再次印证了跨域是浏览器的限制

二、如何解决

解决跨域的方法有很多,下面列举了三种:

  • JSONP
  • CORS
  • Proxy

而在vue项目中,我们主要针对CORSProxy这两种方案进行展开

CORS 实现起来非常方便,只需要增加一些 HTTP 头,让服务器能声明允许的访问来源

只要后端实现了 CORS,就实现了跨域

所以 CORS  解决跨域是在后端解决的

三、配置代理案例

       1. 下面是我自己在后端尝试解决跨域的例子

学新通

从左边的窗口 ,我们可以看到 我们用express在nodejs环境下搭建了一个简单的服务器 ,并且没有使用cors中间件,解决跨域

学新通

所有 如下图所示,我们成功报错了

然后,我们在express搭建的服务器中,使用cors中间件,然后重启服务

学新通

 然后结果也是如我们所料,并没有报跨域的错误

学新通

 OK,到这里我们在服务端解决跨域问题就解决了

2.然后在vue中解决跨域是在vue-cli中的 vue.config.js中配置代理,

                注意!!! 在vue.config.js中配置代理只适用于开发环境,如果大家把项目进行打包后,devServer就没有用了,该报错的还是会报错,但是 在打包后的生产环境中,我们还是有解决方法的

        学新通

        如图,我们也是在服务器中重新注释掉了cors中间件,在vue.config.js中也没有配置代理。

学新通

         那我们也是如愿以偿再次报错。

然后,我们再在vue.config.js中配置proxy代理,添加了这段代代码,且在发送请求时,我们也要在请求的url上 携带上 /bpi 

  1.  
    "/bpi": { // 代理接口前缀为/bpi的请求
  2.  
    "target": 'http://localhost:8080', // 对应的代理地址
  3.  
    "secure": false, // 接受运行在https上,默认不接受
  4.  
    "changeOrigin": true, // 如果设置为true,那么本地会虚拟一个服务器接收你的请求并代你发送该请求,这样就不会有跨域问题(只适合开发环境)
  5.  
    "pathRewrite": { //重写路径 比如'/apis/aaa/ccc'重写为'/aaa/ccc'
  6.  
    '^/bpi': ""
  7.  
    }
  8.  
    },

学新通

这样我们在开发环境下的配置代理就完成了

 学新通

 在生产环境下的我就懒得写了,大家可以看下面的,里面有更好的解释

面试官:Vue项目中你是如何解决跨域的呢? | web前端面试 - 面试官系列 (vue3js.cn)学新通https://vue3js.cn/interview/vue/cors.html#二、如何解决

        

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhcffeej
系列文章
更多 icon
同类精品
更多 icon
继续加载