解决axios会发送两次请求,有个OPTIONS请求的问题


Posted in Javascript onOctober 25, 2018

问题描述:

Vue的开发者都知道axios,很多都用axios来进行数据交互,axios的默认请求头是Content-Type: application/json

使用这个请求头会出现向服务器请求两次的情况

为什么呢?

原因是:浏览器会首先使用 OPTIONS 方法发起一个预请求,判断接口是否能够正常通讯,如果不能就不会发送真正的请求过来,如果测试通讯正常,则开始真正的请求。

大概意思就是:

浏览器对后台说:我可以请求你吗? ( ̄ˇ ̄) 
后台说:阔以。( ̄? ̄)~*
结果是:发送原有的GET(POST)请求
后台说:不阔以。(??′)
结果是:报错

那么这样每个请求都会发送两次,无形加重了服务器的负担(如果服务器特厉害就当我没说),网上有的解决办法是让后台允许options请求,但是并不返回任何数据,那么就不会报错,可是这样治标不治本,浏览器还是来撩后台了,只是后台不让撩而已。

如何解决这个问题?不允许浏览器请求,只发送真正的请求,我也没解决,如果有已经解决的朋友可以告诉我解决方法~( ̄3 ̄)~

但.......

我有可以替代的方法

那就是在main.js中,设置axios的默认请求头axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';

可是问题又来了

解决axios会发送两次请求,有个OPTIONS请求的问题

后台不认这个数据格式啊...

所以在传递的时候必须先把数据转换格式

这时候我们需要用到qs模块

npm install qs

在main.js中

引入qs模块

import qs from 'qs

然后弄qs原型

Vue.prototype.$qs = qs

这样我们就可以在axios post请求的时候将我们传递的数据转换成后台认识的格式

this.$axios
   .post("http://xxx/", 
    this.$qs.stringify(postData)
   ).then(data => {
    if (data.data.status != 200) {
     //xxx
    } else {
     //xxx
    }
   });

总结

以上所述是小编给大家介绍的解决axios会发送两次请求,有个OPTIONS请求的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
一种JavaScript的设计模式
Nov 22 Javascript
fromCharCode和charCodeAt 方法
Dec 27 Javascript
Javascript与vbscript数据共享
Jan 09 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
javascript实现可拖动变色并关闭层窗口实例
May 15 Javascript
7个有用的jQuery代码片段分享
May 19 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
Three.js中矩阵和向量的使用教程
Mar 19 Javascript
浅谈目前可以使用ES10的5个新特性
Jun 25 Javascript
JS Math对象与Math方法实例小结
Jul 05 Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 Javascript
在Vue中使用axios请求拦截的实现方法
Oct 25 #Javascript
webpack4+react多页面架构的实现
Oct 25 #Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 #Javascript
代码整洁之道(重构)
Oct 25 #Javascript
Vue使用NPM方式搭建项目
Oct 25 #Javascript
小程序云开发实战小结
Oct 25 #Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
Oct 25 #Javascript
You might like
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
用PHP实现WEB动态网页静态
2006/10/09 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
nginx下安装php7+php5
2016/07/31 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python字符串连接的N种方式总结
2014/09/17 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
浅谈react路由传参的几种方式
2021/03/23 Javascript
行政部工作岗位职责范本
2014/03/05 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
小学老师对学生的评语
2014/12/29 职场文书
毕业生评语大全
2015/01/04 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
详解如何使用Nginx解决跨域问题
2022/05/06 Servers
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL