您现在的位置是:群英 > 开发技术 > web开发
浅谈axios全局配置、拦截器和proxy跨域代理的相关知识
Admin发表于 2022-11-19 17:51:07942 次浏览
这篇文章给大家分享的是“浅谈axios全局配置、拦截器和proxy跨域代理的相关知识”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“浅谈axios全局配置、拦截器和proxy跨域代理的相关知识”吧。


一、全局配置axios

1. 为什么要全局配置 axios

在实际项目开发中,几乎每个组件中都会用到 axios 发起数据请求。此时会遇到如下两个问题:

① 每个组件中都需要导入 axios(代码臃肿)

② 每次发请求都需要填写完整的请求路径(不利于后期的维护)【相关推荐:vue.js视频教程】

2. 如何全局配置 axios

在 main.js 入口文件中,通过 app.config.globalProperties 全局挂载 axios,示例代码如下:

3.在 vue2 的项目中全局配置 axios

需要在main.js 入口文件中,通过Vue 构造函数的prototype 原型对象全局配置 axios

二、axios 拦截器

1. 什么是拦截器

拦截器(英文:Interceptors)会在每次发起 ajax 请求和得到响应的时候自动被触发。

2. 配置请求拦截器

通过 axios.interceptors.request.use(成功的回调, 失败的回调) 可以配置请求拦截器。示例代码如下:

2.1 请求拦截器 – Token 认证

2.2 请求拦截器 – 展示 Loading 效果

借助于element ui 提供的 Loading 效果组件

3. 配置响应拦截器

通过 axios.interceptors.response.use(成功的回调, 失败的回调) 可以配置响应拦截器。示例代码如下:

展示Loading效果实战示例:

三、proxy 跨域代理

1. 接口的跨域问题

解决跨域

1)、Cors(最标准的处理) 不需要前段人员做任何处理 只需要写服务器的人在服务器里面在返回响应的时候加几个特殊的响应头

2)、Jsonp 最巧妙的解决办法 借助了script标签里面的src属性 在引入外部资的时候不受同源策略限制这个特点办到的 在开发中很少用 因为需要前端+后端人员共同完成 而且也只能解决get请求的跨域问题

3)、代理服务器

代理服务器也是个服务器 它的端口号和我们自身保持一致 两台服务器之间的交流不首同源策略限制 即这样便可解决跨域问题 所以在发请求的时候端口号也是8080

vue 项目运行的地址:http://localhost:8080/

API 接口运行的地址:http://www.escook.cn/api/users

由于当前的 API 接口没有开启 CORS 跨域资源共享,因此默认情况下,上面的接口无法请求成功!

2. 通过代理解决接口的跨域问题

通过vue-cli 创建的项目在遇到接口跨域问题时,可以通过代理的方式来解决:

① 把 axios 的请求根路径设置为vue 项目的运行地址(接口请求不再跨域)

② vue 项目发现请求的接口不存在,把请求转交给proxy 代理

③ 代理把请求根路径替换为devServer.proxy 属性的值,发起真正的数据请求

④ 代理把请求到的数据,转发给 axios

3. 在项目中配置 proxy 代理

步骤1,在main.js 入口文件中,把 axios 的请求根路径改造为当前web 项目的根路径:

步骤2,在项目根目录下创建vue.config.js 的配置文件,并声明如下的配置:

① devServer.proxy 提供的代理功能,仅在开发调试阶段生效

② 项目上线发布时,依旧需要API 接口服务器开启 CORS 跨域资源共享

使用方式一配置代理服务器有两个不完美的地方:

1、不能灵活的控制走不走代理服务器

public文件夹相当于8080服务器的根路径(8080这台服务器里面有什么就取决于public文件夹里有什么)当请求的资源8080自身有的时候 就不会将这个请求转发至5000服务器

2、不能够配置多个代理,只能将请求转发给5000服务器

使用方式二开启代理服务器 ‘/api’ 请求前缀

作用:当本地请求发送到代理服务器时 代理服务器会来判定 该请求的前缀是不是‘/api’,如果是 则发送请求(转发请求至5000),如果不是 则不发送请求 可以灵活的控制走不走代理服务器(‘/api’不是固定值,可自定义为‘/hah’ 等)

前缀的携带位置:紧跟端口号

如果直接这么请求的话 会导致404错误 因为发送请求到5050服务器的时候携带的还是/api/students, 5050服务器有students但是没有/api/students

加上这个配置才能保证代理服务器发送到5050服务器请求时 只发送了/students 从而拿到数据

ws作用:用于支持websocket

changeOrigin:(用于控制请求头中host的值)

当changeOrigin:true时,代理服务器会表明自己也是5050服务器

当changeOrigin:false时,代理服务器表明自己是8080服务器

有时候5050服务器会有些限制 所以这个配置项最好设置为true。

ws和changeOrigin这两项如果不写的话 默认值也是true(在react中不写为false)



以上就是关于浅谈axios全局配置、拦截器和proxy跨域代理的相关知识的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,想要了解更多,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: 全局配置axios
相关信息推荐
2022-02-21 18:16:38 
摘要:这篇文章我们来了解Python运算符优先级的相关内容,Python运算符优先级是Python学习中的基础知识,因此本文就给大家来介绍一下,下文有详细的介绍,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
2022-09-19 17:56:48 
摘要:jquery异步请求的意思是浏览器在发送请求给服务器之后,不需要等待服务器响应返回就可以随时发送下一次请求,即请求发送之前的数据不丢失,又能实现页面的局部刷新;可以利用Ajax、“$.get()”、“$.post()”和“$.getJSON()”四种方法实现异步请求。
2022-07-22 17:45:06 
摘要:简单python代码类型有:1、使用【if.else】语句实现判断语句,代码为【if p<40 :print("海绵给大星10块")】;2、使用【for.in.】遍历字典里的数据,把key名取出来,代码为【if a in v[key]:】。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部