今天在调接口的时候,发现在axios Post的方式提交formData格式的数据的时候出现了请求变成opition的情况,导致无法请求成功。这把我给郁闷的啊,因为我用jQuery的$.ajax可以请求成功,没有任何问题,数据成功返回。于是我就去网上搜了一番,最后终于解决了!下面我来分析一下:

错误情况

控制台请求方式变成了OPITIONS

可是我明明写的是POST啊

这是为啥呢?具体原因可以参考浅谈 AJAX 跨域请求时的 OPTIONS 方法 ,我觉得说的很详细,下面,我来说下我的解决方法吧?

解决方法

1. 使用 URLSearchParams (会有兼容问题,写起来比较麻烦)

var data = new URLSearchParams();
data.append('id', '1');
data.append('name', 'minmin');
data.append('age', '23')
...postData(data).then(    res => {...}
)复制代码

这里的postData是我直接写好的方法,如果是没有封装过的axios 就直接按原始的写法传参就好啦

axios.post('url, data).then(res => {...}
)
复制代码

2.使用qs.stringify

1.安装

npm install --save axios vue-axios qs安装不上的用淘宝镜像,然后cnpm install --save axios vue-axios qs复制代码

2.axios配置

我把axios配置写在src/utils/request.js里面,在我当前这个request.js里引入qs并配置

在上面这两个地方按我的写法引入qs,并且在axios.interceptors.request.use请求前判断如果是post请求就将data qs.stringify

import qs from 'qs'
复制代码
axios.interceptors.request.use((config) => {if(config.method  === 'post'){config.data = qs.stringify(config.data);}return config;
},(error) =>{return Promise.reject(error);
});
复制代码

这样就ok拉,就不用担心请求方式那里是opitions了,打开控制台看一下,太棒了,奖励一朵小发发

如果没有封装axios配置,可以引入后,直接

axios.post('url, qs.stringify(data)).then(res => {...}
)复制代码

遇见的问题

是不是觉得这样就大功告成了,不不不,因为我的请求是需要发送一大堆中文给后台,发送成功后,发现后台返回给我的值是一堆乱码,不对啊!这不对啊!看看自己接口穿的参数明明是中文怎么特么的返回回来就变成乱码了,这。。。我又去找了找问题,发现只只要在axios配置那里加一行代码

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';复制代码

最后再请求接口试试,乱码不见啦,搞定!

我个人建议使用qs的这个方法哈,因为使用起来比较方便, 每次append太麻烦啦~

下次说axios配置!哈哈?

axios中POST请求变成OPTIONS处理相关推荐

  1. 如何使用 Axios 中的请求拦截器 和响应拦截器

    Axios 是一个常用的 JavaScript 库,用于发送 HTTP 请求和处理响应.在网站设计中,我们可以使用 Axios 请求拦截器和响应拦截器来实现一些常见的需求,例如添加认证信息.处理错误信 ...

  2. axios中出现两次请求,OPTIONS请求和GET请求

    在项目中发现ajax中出现两次请求,OPTIONS请求和GET请求 查看到浏览器NetWork有两次请求,请求url一样: 查找原因是浏览器对简单跨域请求和复杂跨域请求的处理区别. XMLHttpRe ...

  3. promise的应用和在VUE中使用axios发送AJAX请求服务器

    promise 用promise对函数封装: 原来的代码: <!DOCTYPE html> <html> <head><title>vue demo&l ...

  4. axios每次发送请求会有两次,多一次Request Method: OPTIONS是怎么回事?

    现在vue项目中使用axios发送http请求,每次请求都会多一次Request Method: OPTIONS请求,然后才是get/post请求,请问这个是后台的问题还是我这边axios请求的问题? ...

  5. axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求

    作为后端攻城狮,写前端代码是一种什么体验? 相信不少人和 @Python大星 一样,有写过前端代码的经历. 记录一下,Vue 框架开发中"啼笑皆非"的故事,非专业前端人员,该案例无 ...

  6. axios vue 回调函数_vue中ajax请求与axios包完美处理

    这次给大家带来vue中ajax请求与axios包完美处理,vue中ajax请求与axios包处理的注意事项有哪些,下面就是实战案例,一起来看一下. 在vue中,经常会用到数据请求,常用的有:vue-r ...

  7. Vue-cli3.x中使用Axios发送跨域请求的配置方法

    Vue-cli3.x中使用Axios发送跨域请求的配置方法 安装axios npm i axios -s main.js中引入 import axios from 'axios'//将axios挂载在 ...

  8. vue+axios中的get请求传参,post请求头(form/json)不一样的传参的处理

    <script>需要引入 import axios from 'axios' import Qs from 'qs'(如果只是get请求就不需要引qs) 1.正常get请求:      v ...

  9. 使用rest_framework写api接口的一些注意事项(axios发送ajax请求)

    1. 类继承GenericAPIView,定义queryset 印象深刻的事: 由于原来对于继承关系不太清楚,写接口 APIView/泛指GenericAPIView不太关注queryset 没有设置 ...

最新文章

  1. 大厂常见笔试题 滑动窗口内数的和
  2. 怎样批量调整word 图片大小?
  3. c语言有图小游戏,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
  4. 深度学习实践经验汇总
  5. html倒计时timer,js如何使用定时器实现倒计时功能
  6. opencv基础--图像模板匹配
  7. jsp mysql新闻管理系统_基于jsp实现新闻管理系统 附完整源码
  8. matlab四大取整函数fix,floor,ceil,round
  9. Photoshop-Camera Raw滤镜
  10. 北京邮电大学计算机考研英语,我的考研心得——北京邮电大学计算机专业
  11. C# extention extension
  12. 浦东人大常委会副主任刘宇青一行莅临零数科技指导工作
  13. 怎么给PDF删除其中一页,PDF删除其中一页的方法
  14. egret可以用php做后端吗,Egret引擎开发指南之发布项目_node.js
  15. 干货 | 带你解锁AC/DC、DC/DC转换器基础
  16. C++学习路线必读4本书
  17. 棒棒糖球球机器人_球球大作战刷棒棒糖
  18. html入门基础-边框设计(入门级)
  19. 解决一切运行库问题 运行库合集安装包、DirectX修复工具、.net最新合集包
  20. java并发编程实战wwj----------------------第一阶段--------------31-32-33-34

热门文章

  1. 移动端实现文字轮播_js实现移动端轮播图
  2. 隐藏esp_仅需一分钟教你看懂汽车内的隐藏功能,哪些功能是你不知道的?
  3. php伪静态url运用,再谈 THINKPHP 伪静态url(URL访问模式)的设置
  4. 洛谷 P2163 [SHOI2007]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)
  5. 破解百度翻译页面api参数加密
  6. 【Android】隐藏底部虚拟按键
  7. python中对列表浅复制深复制另类的理解方式
  8. ios新手开发——toast提示和旋转图片加载框
  9. Redmine环境搭建
  10. 关于AutoResetEvent 和ManualResetEvent