Cookie的過期時間為Session在微信瀏覽器失效
阿新 • • 發佈:2022-03-08
前言
最近一次迭代上線,結果臨了上線當晚,被我無疑間發現一個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. 額外的補償機制,比如報錯後做額外的場景處理即可。
但最好的方案自然是推翻重做了,可惜是這是個業務很關心的膏藥專案,但技術架構很老舊,屬於一碰就碎,所以只能忍忍了。