1. 程式人生 > 其它 >Cookie的過期時間為Session在微信瀏覽器失效

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. 額外的補償機制,比如報錯後做額外的場景處理即可。

但最好的方案自然是推翻重做了,可惜是這是個業務很關心的膏藥專案,但技術架構很老舊,屬於一碰就碎,所以只能忍忍了。