问题描述:
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请求的问题。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!