在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.代理服务器是如何解决跨域的?

在Vue中配置代理服务器的方法详解

由此我们可以借助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

标签:vue,代理,服务器
0
投稿

猜你喜欢

  • Python基于分水岭算法解决走迷宫游戏示例

    2021-08-04 17:41:37
  • Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例

    2021-07-23 01:24:36
  • Python识别html主要文本框过程解析

    2023-11-09 01:31:52
  • php获取域名的google收录示例

    2022-08-22 07:26:48
  • ES6学习笔记之正则表达式和字符串正则方法分析

    2024-04-18 10:00:23
  • 如何判断电子邮件的地址格式是否正确?

    2010-01-12 20:12:00
  • Python 字符串换行的多种方式

    2021-06-01 09:04:58
  • SqlServer获取存储过程返回值的实例

    2024-01-21 00:53:35
  • python主线程捕获子线程的方法

    2022-06-07 21:25:46
  • 汉明码编码原理及校验方法分析

    2022-10-09 06:38:13
  • 解决tensorflow测试模型时NotFoundError错误的问题

    2021-08-02 09:33:56
  • Python基础知识之变量的详解

    2023-12-16 13:41:40
  • PyTorch中常用的激活函数的方法示例

    2022-11-02 01:17:44
  • 一种弹出提示信息时页面背景色调改变的方法

    2008-12-01 12:22:00
  • 获取服务器传来的数据 用JS去空格的正则表达式

    2024-04-16 09:31:07
  • python打印异常信息的两种实现方式

    2023-11-17 15:37:41
  • Python实现DBSCAN聚类算法并样例测试

    2022-04-22 22:25:48
  • MySQL数据库闭包Closure Table表实现示例

    2024-01-21 23:29:24
  • 七十六个网站用户体验要点

    2010-08-11 14:52:00
  • 在查询分析器理启动或停止SQL Agent服务

    2009-01-08 16:20:00
  • asp之家 网络编程 m.aspxhome.com