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. 额外的补偿机制,比如报错后做额外的场景处理即可。

但最好的方案自然是推翻重做了,可惜是这是个业务很关心的膏药项目,但技术架构很老旧,属于一碰就碎,所以只能忍忍了。

 

 

posted @ 2022-03-08 19:34  Dyhuang  阅读(1809)  评论(0编辑  收藏  举报