axios踩坑日志

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;

你可能感兴趣的:(axios踩坑日志)