1、开始有人反应用偶然会加载失败的情况,一开始还不太相信,因为每次手机运行都正常(iOS)。
2、查看日志,发现果然有验证不通过的问题出现。
3、经过测试跟踪发现了成功的时候返回的数据,与失败的时候返回的数据的顺序不一样。
4、失败的情况都是android手机,iOS没有发现过这种问题。
失败的时候:
成功的时候:
Shiro的认证,是通过JSESSIONID来的。
测试了很多次,只要是正常验证通过的,都是JSESSIONID开头的。
解决:
将开始的代码:
wx.setStorageSync("sessionId", res.header["Set-Cookie"]);
改为:
var cookie = res.header['Set-Cookie'] // 字符串分割成数组 var cookieArray = cookie.split(/,(?=[^,]*=)/) // 分号拼接数组 var newCookie = cookieArray.join(';') // 存储拼接后的cookie try { wx.setStorageSync('sessionId', newCookie) } catch (error) { log.error('setStorageSync cookie fail') }
参考:
https://blog.csdn.net/czx0132/article/details/110101854 (分析的相当精典)