![]()
症状:Android正常,iOS微信中正常,iOS客户端出错。
卡了一天,最开始以为是App的锅。
iOS在做了一些修改之后,在iOS 13.6中修复了该问题;但在最新的14版本中问题依然存在
后来又想着是不是请求已经发出去了但是服务端没有返回结果,于是又去服务端查日志。(也不是服务端的问题)
内外都找不到问题,感觉我的天空都暗了。
这时候又想着是不是axios 0.21.0的问题,手动降级npm install axios@0.19.0
。(也还不行,我淦啊)
最后一搏,在axios的拦截器里输出一下:
1 2 3 4 5
| axios.interceptors.response.use(() => { ... }, (error) => { console.log('response error', error) })
|
嗯?有报错了。
![]()
setRequestHeader forEach dispatchXhrRequest Promise…
我的headers部分的确是一次性赋值的,难道需要一条条插入?
1 2 3 4 5 6 7
| reqConfig.headers = Object.assign({}, headers)
for ( let key in headers ) { reqConfig.headers[key] = headers[key] }
|
改了之后重试,还是不行。。。。
这时候我对key产生了些好奇,决定循环输出key看下:
![]()
嗯?怎么有两个user-agent?难道是这个问题?
于是我更新了下我的代码:
1 2 3 4 5
| for (const key in store.state.headers) { if (key !== 'Accept' && key !== 'user-agent') { reqConfig.headers[key] = (store.state.headers as any)[key] } }
|
淦,好了。
总结:当headers出现重复值(即使大小写不同)时,axios请求就会出现一直Pending的状态。