Cookie的过期时间为Session在微信浏览器失效
前言
最近一次迭代上线,结果临了上线当晚,被我无疑间发现一个bug,之前测试小伙伴没测出来。Cookie的过期时间为Session在微信浏览器失效
。.net framework webform 项目
因为项目历史比较复杂,也就是说他是一个膏药项目
其中有一个场景将用户的一个临时票据{token}存储与cookie中,服务端存储采用HttpCookie方式存储,cookie的过期时间没有设置;
HttpCookie jwtCookie = new HttpCookie("applicationJwt", tokenString) { Secure = true, HttpOnly = false, SameSite = SameSiteMode.Lax, }; Response.AppendCookie(jwtCookie);
查看浏览器 默认过期时间为Session
度娘了下发现 当cookie的过期时间设置为Session之后,该cookie的生命周期基本个SessionStorage的一样,也就是关闭浏览器后失效。
本人也分别在Chrome Firefox Edge浏览器上进行验证,都通过了。
但在微信浏览器中却发现关闭浏览器窗口后,对应的cookie依然存在。
这就导致了,用户第二次打开微信浏览器中,发现对应的jwt依然存在。 就会直接通过jwt调用api,这时候就会报错401,而新开发的界面没有单独为401做额外处理。 导致该bug的产生。
解决方案:
1. 如需要微信浏览器的前提下设置cookie的话,一定要设置该cookie的过期时间。否则就会有问题。
2. 额外的补偿机制,比如报错后做额外的场景处理即可。
但最好的方案自然是推翻重做了,可惜是这是个业务很关心的膏药项目,但技术架构很老旧,属于一碰就碎,所以只能忍忍了。