[Vue]axios发送请求无返回,一直处于Pending状态
in 后端 with 0 comment

[Vue]axios发送请求无返回,一直处于Pending状态

in 后端 with 0 comment

微信图片_20210126202133.jpg

症状:Android正常,iOS微信中正常,iOS客户端出错。

卡了一天,最开始以为是App的锅。

iOS在做了一些修改之后,在iOS 13.6中修复了该问题;但在最新的14版本中问题依然存在

后来又想着是不是请求已经发出去了但是服务端没有返回结果,于是又去服务端查日志。(也不是服务端的问题)

内外都找不到问题,感觉我的天空都暗了。

这时候又想着是不是axios 0.21.0的问题,手动降级npm install axios@0.19.0。(也还不行,我淦啊)

最后一搏,在axios的拦截器里输出一下:

axios.interceptors.response.use(() => {
    ...
}, (error) => {
    console.log('response error', error) 
})

嗯?有报错了。

微信截图_20210126200912.png

setRequestHeader forEach dispatchXhrRequest Promise...

我的headers部分的确是一次性赋值的,难道需要一条条插入?

// old
reqConfig.headers = Object.assign({}, headers)

// new
for ( let key in headers ) {
    reqConfig.headers[key] = headers[key]
}

改了之后重试,还是不行。。。。

这时候我对key产生了些好奇,决定循环输出key看下:

微信图片_20210126201640.jpg

嗯?怎么有两个user-agent?难道是这个问题?

于是我更新了下我的代码:

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的状态。

Comments are closed.