axios踩坑日志
2018-08-30 本文已影响0人
小西_01bc
1. HTTP请求中的Form Data与Request Payload的区别
- jquery中的ajax,data会自动的被转换成查询字符串格式key1=value1&key2=value2这种形式,很显然这种形式不是json格式.
- jquery在执行post请求时,会设置Content-Type为application/x-www-form-urlencoded,所以服务器能够正确解析,而使用原生ajax、axios请求时,如果不显示的设置Content-Type,那么默认是text/plain,这时服务器就不知道怎么解析数据了,所以才只能通过获取原始数据流的方式来进行解析请求数据。
- axios(post)用form-data传参的解决方法:
麻烦: https://segmentfault.com/a/1190000012635783
简易: https://www.jianshu.com/p/b10454ed38ba
// #创建一个axios实例
axios.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.withCredentials = true;
axios.defaults.transformRequest = [function (data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}]
2. axios默认是发送请求的时候不会带上cookie的,需要通过设置withCredentials: true来解决
axios.defaults.withCredentials = true;