在Vue中配置代理服务器的方法详解
作者:哥们儿哥们儿学前端吗 发布时间:2024-04-30 10:22:10
大家既然能看到这个视频,说明大家对跨域已经有了一定的理解,所以这里就不花功夫对跨域进行详细的介绍了
1. 首先扩展一点,axios在本地发送的请求如果你不把路径写全,它都是会默认加上自己项目所在的端口,就比如说
axios.get('/student')
axios.get('/teacher')
点击发送按钮后,以上两行代码实际为
http://localhost:8081/student
http://localhost:8081/teacher
其中localhost:8081为自己项目所在的地址。
2.代理服务器是如何解决跨域的?
由此我们可以借助axios发送请求时,会默认发送给本地的特性来解决跨域问题
3.如何在vue中配置代理服务器,代码十分简单。
devServer: { //开启代理服务器 (方式1) 配置多个代理
proxy: {
'/api': { //'/api'是自行设置的请求前缀
target: 'http://localhost:5000',
pathRewrite:{'^/api':''}, //路径重写,(正则)匹配以api开头的路径为空(将请求前缀删除)
ws: true,//用于支持websocket
changeOrigin: true //用于控制请求头中的host值
},
}
上述代码中,我配置一个匹配所有前缀为/api的请求,也就是所有以/api为头的请求都会走我上面配置的代理,向http://localhost:5000这个服务器发送请求。但是最前面我写的两个接口为‘/student’和‘/teacher’,他们并不会走代理。
4. 如何解决呢?
我们可以利用axios的二次封装,给所有的请求都添加上/api这个前缀(这个前缀是可以随意命名的)
const requests = axios.create({
//配置对象
//基础路径,在发送请求时,路径当中会出现api
baseURL:'/api',
//代表请求超时的时间
timeout:5000
});
此时我们点击按钮发送的请求为
http://localhost:8081/api/student
http://localhost:8081/api/teacher
通过代理服务器的target属性加工之后我们原先的请求就变为了
http://localhost:5000/api/student
http://localhost:5000/api/teacher
也就是把/api前的路径换成了目标服务器的地址。因为/api这个前缀是我们自己添加的,所以需要用到pathRewrite 来将/api重写为‘’(空)
http://localhost:5000/student
http://localhost:5000/teacher
这时,我们就可以正常获取数据了。
注意:如果在开发中,我们拿到的所有请求有共同的前缀,那么我们可以省略给所有接口统一加上/api这一步操作。
当然还有更加简洁的做法,让所有的请求都走代理,而并不去匹配请求的前缀。
devServer:{
proxy:'http://localhost:5000' //开启代理服务器 (方式2) 5000端口指的是要向5000端口发送请求
},
但是这样会有缺陷,如果你请求的资源本地就有,他会直接返回本地的数据,而不会向服务器发送请求,所以建议大家还是用方式1,虽然麻烦,但是可以配置多个代理,也不会出现资源直接从本地返回的情况。
来源:https://blog.csdn.net/A_adadada/article/details/127651497


猜你喜欢
- Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知
- 插入排序插入排序,英文名(insertion sort)是一种简单且有效的比较排序算法。思想: 在每次迭代过程中算法随机地从输入序
- jQuery是一个非常优秀的JavaScript 框架,使用简单灵活,同时还有许多成熟的插件可供选择,它可以帮助你在项目中加入一些非常好的效
- 在 HTML 中,有两种方式来表现文本框:一种是使用<input>元素的单行文本框,另一种是使用 <textarea>
- 1、捕获摄像头和实时显示import cv2import numpy as npimport pickleimport matplotlib
- 自从jQuery搞出特性侦探这东东,西方从来没有如此狂热研究浏览器。在以前javascript与DOM遍地是bug,美工主宰前端的年代,人们
- 0.配置依赖环境,如果不进行这步可能会出现一些问题中间可能有多余空格,去除下再运行,一般都能安装成功,如果不能可以先更新下sudo apt-
- 前面使用TensorFlow实现一个完整的Softmax Regression,并在MNIST数据及上取得了约92%的正确率。前文传送门:
- 我开发过几个采集程序,也研究过很多采集程序代码,所以对采集程序的原理还算是稍微有些了解。先说一下采集原理:采集程序的主要步骤如下: 一、获取
- 前不久微信上线了拍一拍功能,刚推出就被有才的网友玩坏了。还有更多没有节操的拍法这里就不展示了。但拍一拍属于弱提示,只有在聊天界面才能感受到。
- 程序很简单,主要是 mp3play 模块的应用import mp3play, timefilename = "Should It
- MySQL常用存储引擎之MyISAM特性:1、并发性与锁级别2、表损坏修复check table tablenamerepair table
- 网页上搜索 “python绘制国际象棋棋盘”,索引结果均为调用 turtle 库绘制棋盘结果;为了填充使用 python PIL 图像处理库
- 前言:随机数模块实现了各种分布的伪随机数生成器。对于整数,从范围中有统一的选择。 对于序列,存在随机元素的统一选择、用于生成列表的随机排列的
- 如下所示:<!doctype html><html lang="en"> <head>
- Python2.7已于2020年1月1日开始停用,之前RF做自动化都是基于Python2的版本。没办法,跟随时代的脚步,我们也不得不升级以应
- 目录1. threding模块创建线程对象2. threding模块创建多线程3. 多线程的参数传递4. 线程产生的资源竞争1. thred
- 疫情数据程序源码// An highlighted blockimport requestsimport jsonclass epidemi
- 这些日子一直在简书上使用markdown写作,已经渐渐的痴迷于这种简洁纯粹的写作方式了。不过就我逐渐入门markdown的写作过程来看,目前
- 前言近期在工作中遇到某表某字段是可扩展数据内容,信息以逗号分隔生成的,现需求要根据此字段数据在其它表查询相关的内容展现出来,第一想法是切割数