收藏
回答

小程序中 reqeust header中返回多个set-cookie时前端获取的数据有误

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug request 工具 8.0.40 2.21.2

线上存在,是在开发者工具中复现的。

当后端返回的请求头中存在多个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来实现的。 望官方早日解决。

最后一次编辑于  2023-08-07
回答关注问题邀请回答
收藏
登录 后发表内容