学习Vue配置代理总结

今天学习了Vue的配置代理,当我们想要向服务器取回来数据时就先要向服务器发送请求,但前端发送请求的方式也有很多种,首先是发送请求的鼻祖JS的XMLHttpRequest(xhr),它操作起来相对麻烦,开发中也比较少用。第二个就是xhr的替代品fetch,直接调用即可它同样是JS内置的,但取数据也比较繁琐,还有一个致命的缺点就是兼容性差(IE浏览器无法使用)。还有其他方法就是借助第三方库,比如jQuery它封装了xhr,但这个库的主要作用是封装DOM操作,缺点是自身的体积比较大。最后要介绍的是Vue官方都推荐发请求使用的axios这个第三方库,重点axios是Peomise风格的,不但可以发送xhr请求,还支持请求和响应拦截器,它更专注于发请求的功能,所以它的体积差不多只有jQuery的四分之一大。

有了发送请求接下来要解决的就是在不同域中的资源交互(俗称:跨域),这里涉及到一个浏览器的安全功能叫同源决策,简单点理解就是我们浏览器的协议、主机名、端口号要和请求服务器的这三个完全相同才被认为是同源,只有这样才能获取到服务器上的资源,否则不行。

解决跨域问题也有几种方法,第一种是cors,服务器响应时配置特殊的响应头从而浏览器可以拿到数据,缺点是任何人都可以找该服务器取数据,但这是完全由服务器后端解决的跨域问题(前端就不考虑了)。第二种是jsonp库,巧妙使用了script标签里面的src属性引入外部数据不受同源策略限制的特点办到的,但缺点是需要前后端的配合,还有它只能解决get跨域的问题其他的解决不了。最后一种就是本章要说的重点:代理服务器,这完全是由前端操作完成的,让前端向代理服务器发请求,然后代理服务器再和服务器打交道,这样服务器跟服务器之间通过http传输(绕过跨域限制)。

接下来说第一种开启和使用代理服务器的方法。

按以上操作复制代码到Vue脚手架中的vue.config.js配置文件中,将端口号(4000)改为要请求的服务器的端口号,这样就开启了一台代理服务器。然后在终端通过npm i axios命令下载axios,再从需要发送请求的组件中使用import axios from ‘axios’将axios引入使用。

如上图所示,浏览器发送请求的地址为代理服务器的地址(相同的),不过要在端口后携带请求数据的路径,比如:'http://localhost:8080/students',这样就收到了服务器响应回来的数据了,这种方法开启的代理服务器有两个缺点,第一个是不能配置多个代理(只能像一个服务器发送请求),第二个是不能灵活的控制请求是否走代理(当请求的资源8080本身就有时,则直接取本地的,代理也不会将请求发出)。

第二种开启代理服务器的方法,首先到官网刚才第一种方法的位置向下滚动一点就可以看到一下代码块,同样复制到代码到Vue脚手架中的vue.config.js配置文件中,下面一同介绍代码块的具体配置规则。

module.exports = {devServer: {proxy: {'/api1': { //匹配所有以'/api1'开头的请求路径target: 'http://localhost:5000', //代理目标的基础路径changOrigin: true, //用于控制请求头中的host值pathRewrite:{'^/api1': ''}, //重写路径ws: true //用于支持websocket},'/api2': { //匹配所有以'/api2'开头的请求路径target: 'http://localhost:5001', //代理目标的基础路径changOrigin: true, //用于控制请求头中的host值pathRewrite:{'^/api2': ''}, //重写路径ws: true //用于支持websocket}}}
}
/*changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:8080changeOrigin默认值为true
*/

重点说一下pathRewrite重新路径,当配置多个代理时,浏览器发请求给代理则需要带着开头路径比如:api1,这时配置一个pathRewrite(对象形式,左边的key值写正则表达式,右边value值将替换掉前面的左边的值再生成路径去访问),这样本机浏览器向8080代理服务器发送的请求就带有key值,而8080代理服务器请求5000服务器时则将用空字符串替换掉key值,这样访问5000的服务器就不会出现路径的错误了,这也正是使用第二种方法的一个缺点,请求资源时必须加前缀(配置略微繁琐),优点显而易见可以配置多个代理,发送请求时(http://localhost:8080/前缀/students)还可以通过在端口号后面加前缀(加就走代理、不加则不走)的方式来灵活的控制请求是否走代理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot自定义Starter(@EnableXXX和META-INF的SPI自动添加)

目录 1. 自定义Starter1.1 场景和效果1.2 starter实现1.2.1 创建自定义starter项目1.2.2 把所有maven依赖导入1.2.3 实现公共代码逻辑1.2.4 添加方式一:实现RobotAutoConfiguration配置类1.2.5 添加方式二:实现RobotAutoConfiguration配置类 EnableRobo…

大数据日志数据量过大如何处理

如果是web端的埋点数据,我们可以对这些数据进行分流。 我们可以采用事件分流,步骤如下 定义事件类型: 根据埋点数据的内容,定义不同的事件类型。例如,可以有页面访问事件、按钮点击事件、表单提交事件等。 提取关键信…

Linux下如何快速调试I2C设备

Linux下如何快速调试I2C设备 目录 1 什么场景下需要快速调试I2C设备 2 如何快速调试I2C设备 3 如何获取I2C Tools工具集 3.1 获取I2C Tools工具集源码 3.2 编译I2C Tools工具集源码 3.3 为设备添加I2C Tools工具集 4 如何使用I2C Tools工具集 5 小结 1 什么场景下需要快…

强化app广告变现用户隐私合规,移动广告变现合规技巧

移动广告技术的发展帮助开发者极大提升了广告变现效率,APP作为用户个人信息处理的重要载体,自从《个人信息保护法》颁布以来,个人信息的使用已经成为监管重点,开发者强化合规意识,让广告变现业务“细水长流”&#xff…

Ansible Filter滤波器的使用

一、【说在前面】 Ansible Filter一般被称为滤波器或者叫过滤器。 这个东西初次听到以为是什么科学计算的东西,但是想来ansible不太可能有什么滤波操作,所以这个东西本质是一个数值筛选器,内置函数,本质是一个为了做区别化的工具…

AcrelEMS-CB商业建筑能源管理系统解决方案-安科瑞 蒋静

1概述 AcrelEMS-CB商业建筑能源管理系统,集电力监控、电能质量监测与治理、电气安全预警、能耗分析、照明控制、新能源使用、能源收费以及设备运维等功能于一体,通过一套系统对商业建筑的能源进行统一监控、统一运维和调度,系统可以通过WEB和…

QT基础篇(6)QT5图形与图片

1.QT5位置相关函数 在Qt5中,有一些与位置相关的函数可以帮助您处理窗口和控件的位置。下面是一些常用的位置相关函数: move(x, y): 将窗口或控件移动到屏幕上的指定位置,其中x和y表示要移动到的坐标。 resize(width, height): 调整窗口或控…

go切片参数传递用值还是指针

Go 中常用的切片 slice 数据结构是动态数组,切片长度并不固定,在容量不足的时候会自动扩容。 切片实质上是对一个底层数组的抽象视图,由 Go 运行时维护。在运行时,切片由如下的 SliceHeader 结构体表示,其中 Data 字段…

机器人说明书---名词解释030课_python语言_方法重写

这里写自定义目录标题 方法重写类属性与方法类的私有属性类的方法类的私有方法实例类的私有方法实例如下: 类的专有方法:视频讲解 方法重写 如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法,实例如下&…

【极光系列】springBoot集成Hibernate

【极光系列】springboot集成hibernate gitee地址 直接下载可用 https://gitee.com/shawsongyue/aurora.git 模块:aurora_hibernate mysql安装教程 参考我另外一篇文章,直接下载安装 https://blog.csdn.net/weixin_40736233/article/details/1355829…

数据库负载均衡部署(使用ipvadm ,docker)

文章目录 … 要在Docker中使用IPVS配置MariaDB数据库的高可用集群,并设置VIP地址为192.168.201.4,密码全部设为123456你可以按照以下步骤进行操作: 第一步 创建一个docker网络 docker network create --subnet192.168.200.0/24 mariadb_netw…

FPGA 原理图细节--画引脚

BGA引脚表示 1.1 FPGA此引脚要正确和清晰,会在“Package Pin”中用到次物理接口 1.2, MCU 只用管对应的GPIO逻辑接口就可以了 标识Bank电平 标识出对应Bank的电平,在电路设计中可以清晰的知道对应的脚位输出电平。在"IO std"也方便的选择 Ea…

芯片设计重要工具—— IBM LSF 分布式高性能计算调度平台

IBM Spectrum LSF Suites 是面向分布式高性能计算 (HPC) 的工作负载管理平台和作业调度程序。基于 Terraform 的自动化现已可用,该功能可在 IBM Cloud 上为基于 IBM Spectrum LSF 的集群供应和配置资源。 借助我们针对任务关键型 HPC 环境的集成解决方案&#xff0…

常见的限流算法

本文已收录至我的个人网站:程序员波特,主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。 天下武学出同源 正所谓天下武学殊途同归&#xff…

fgetc函数和fputc函数

目录 getchar和putchargetc和putcfgetc和fputc 橙色 getchar和putchar int getchar(void); // 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数int putchar(int char); // 把参数 char 指定的字符(一个…

N5181A/安捷伦Agilent N5181A信号发生器

181/2461/8938产品概述: 规格(说明书):表示已校准的仪器在工作温度范围0-55C内存放至少2小时,除非另有说明,并经过45分钟预热期后的保证性能。的指标包括测量不确定度。除非另有说明,本文档中的…

【Python数据可视化】matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

全自动洗衣机什么牌子好?内衣洗衣机便宜好用的牌子推荐

随着内衣洗衣机的流行,很多小伙伴在纠结该不该入手一款内衣洗衣机,专门来洗一些贴身衣物,答案是非常有必要的,因为我们现在市面上的大型洗衣机只能做清洁,无法对我们的贴身衣物进行一个高度除菌,而小小的内…

基于python的深度神经网络原理与实践

理论基础 什么是神经网络 我们知道深度学习是机器学习的一个分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。而深度神经网络又是深度学习的一个分支,它在 wikipedia 上的解释如下: 深度神经网络(Deep N…

Vue中keep-alive缓存的详解(深度理解)

文章目录 一、Keep-alive 是什么二、使用场景三、原理分析四、思考题:缓存后如何获取数据beforeRouteEnteractived 参考文献 一、Keep-alive 是什么 keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM ke…