官方给的解释是:XMLHttpRequest.response只支持IE10+(https://msdn.microsoft.com/en-us/library/hh872881(v=vs.85).aspx)。
原因就清楚了,IE8-9没有这个字段,所以axios中的response.data赋值时就为undefined。
这个问题在2016年被提出,2019年8月被关闭了,虽然中间给出了兼容办法,但PR一直未合并。原因是认为ie9已经过时了,微软从2017年3月31日就已经停止了维护支持。所以需要自己手动稍稍改一下。
axios.interceptors.response.use( response => { // IE 8-9 if (response.data == null && response.config.responseType === 'json' && response.request.responseText != null) { try { // eslint-disable-next-line no-param-reassign response.data = JSON.parse(response.request.responseText); } catch (e) { // ignored } } return response; } )