线上存在,是在开发者工具中复现的。
当后端返回的请求头中存在多个set-cookie时,小程序的request会将返回的set-cookie,toString或者是join(','); 来返回给前端,而不是获取到一个数组。导致前端使用localstorage模拟cookie时解析出错。
通过扒chrome的devtools源码,发现也不支持目前微信的这种处理方式。目前通过
(res.header['set-cookie'] || res.header['Set-Cookie'] || '').replace(/,(?!\s)/g, '\n');
来将微信返回的头部中空格替换成devtools中支持的换行符来临时解决了问题。但是这种只兼容了时间戳中的,号;不知是否还有隐藏问题。
方法使用的是https://chromium.googlesource.com/devtools/devtools-frontend 中的CookieParser.parseSetCookie来实现的。 望官方早日解决。