手机版

解决axios将发送两个请求 并且有一个OPTIONS请求的问题

时间:2021-08-29 来源:互联网 编辑:宝哥软件园 浏览:

问题描述:

Vue的开发者都知道axios,很多都是用axios进行数据交互的。axios的默认请求头是内容类型:应用程序/JSON

使用这个请求头将导致对服务器的两个请求

为什么呢?

原因是:浏览器首先会使用OPTIONS方法发起预请求,判断界面是否可以正常通信;如果没有,它将不会发送真正的请求;如果测试通信正常,它将启动一个真正的请求。

大概的意思是:

浏览器对后台说:请问?(~ˇ~)后台说:阔伊。(~( ﹏')结果是:报告了错误

然后,每个请求会被发送两次,无形中增加了服务器的负担(如果服务器极其强大,我就不说了)。一些在线解决方案是让后台允许选项请求,但不返回任何数据,因此不会报告错误。但是,如果症状没有治愈,浏览器还是会来到后台,但是后台不让。

如何解决这个问题?不允许浏览器请求,只发送真实请求,我还没有解决。如果有朋友解决了,可以告诉我解决方法~(~ 3 ~)

但是..

我有一个替代方法

即axios在main.js中设置默认请求头axios . defaults . headers[' content-type ']=' application/x-www-form-URL encoded ';

但是问题又来了

后台无法识别这种数据格式.

因此,数据在传输时必须先转换成格式

此时我们需要使用qs模块

首次npm安装qs

在main.js中

介绍qs模块

从“质量体系”导入质量体系

然后得到qs原型

Vue.prototype.$qs=qs

这样,当axios发布请求时,我们可以将传递的数据转换为后台已知的格式

这个。$axios。贴吧(' http://xxx/',这个。$qs.stringify(postData))。然后(data={ if (data.data.status!=200){//XXX } else {//XXX } });摘要

以上是边肖介绍的解决方案,解决axios会发送两个请求,还有一个OPTIONS请求的问题。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:解决axios将发送两个请求 并且有一个OPTIONS请求的问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。