axios发送POST时请求两次,第一次为OPTIONS
2020-03-02 01:34
1026 查看
出现问题:
发送POST请求时浏览器产生两次请求,第一次为OPTIONS,第二次是真正的POST请求,后台接收不到参数。
查找原因:
非GET请求,会先发送OPTIONS进行预检(预检请求每次运行只发生一次)致使后台接收不到参数值,不停返回参数错误。
于是找到了原因:
查找解决方案:
CORS文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
解决方案:(可行)
改为简单请求(使用form格式提交数据)
//用户注册
var url ="/api/OfferReward/User/ValidateCode"; var instance = axios.create({ headers: {'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'} }); instance.post(url,qs.stringify(tel)).then(res => { if(res.status === 200){ if (res.data.status === 0) { console.log(res.data.msg); } else { console.log(res.data.msg); return false; } } })
不可行的一种测试:
前端接收后台对OPTIONS请求的响应,忽略过滤它。也不能修改OPTIONS的status值,如果不为200则预检请求不通过,后续所有POST接口都无法请求成功。
从返回值拦截不成功,那就只能从根源上解决,使用简单请求避免出现OPTIONS,用表单格式提交。据查,简单请求还有一定的限制,暂时没有遇到。
转载于:https://www.cnblogs.com/CarrotHu/p/10499838.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- axios发送两次请求,options与get/post
- 为什么axios请求接口会发起两次请求(OPTIONS 和POST或者GET)
- Axios 执行post发送两次请求的小坑
- 解决axios会发送两次请求,有个OPTIONS请求的问题
- Vue------用axios发送post请求自动set cookie
- 使用axios发送post请求,将JSON数据改为为form类型
- vue发送post请求到后台 方法一 axios:
- vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete)...
- 让axios发送表单请求形式的键值对post数据
- axios发送post请求,springMVC接收不到数据问题
- 关于使用axios 向服务器端发送post请求,出现415错误
- 使用axios发送get,post请求
- 解决axios发送post请求返回400状态码的问题
- Axios使用post发送请求,后端接收不到的问题 404
- post发送json格式数据请求(axios)
- 使用axios发送post请求,将JSON数据改为为form类型
- 让axios发送表单请求形式的键值对post数据的实例
- axios发送post请求,提交图片类型表单数据
- axios发送post请求,springMVC接收不到数据问题
- axios发送post请求,提交表单数据