IE9 不支持跨域增加请求头,因此采用类似axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
修改Content-Type 或者在header上增加token验证,均不会生效;所以会导致后端报参数错误或401等情况;
另外今天通过看axios源码(0.17.1版本),发现
1、默认情况下'post', 'put', 'patch'
(patch是put方法补充,表示对已知资源局部更新,http1.1产生的)方法, Content-Type默认是application/x-www-form-urlencoded
, 'delete', 'get', 'head'
则不管;
2、当axios 判断 请求的数据类型为URLSearchParams 且没有设置Content-Type时它会设为application/x-www-form-urlencoded;charset=utf-8
且将数据进行了data.toString() 【注: application/x-www-form-urlencoded 需要 序列化qs.stringify(data),否则后端接收不到】 ;当请求的数据类型为Object且没有设置Content-Type时它会设为application/json;charset=utf-8
且将数据进行了JSON.stringify(data);
网友评论