記錄一次cookie導致登錄失敗的慘案

現象描述:

前端登錄成功後並沒有從後端那裏拿到登錄信息,換句話說登錄服務告訴我們登錄成功了,但是後端卻說我們沒有登錄成功。

背景:

因爲前後端分離,所以前後端項目部署在兩個子域名下。

因爲要打通登錄態,需要調用登錄服務,登錄服務會在 .baidu.com 下寫入登錄態。

前端域名:xxx.baidu.com

後端域名:yyy.baidu.com

原因:

後端拿到的登錄態和登錄服務下發的登錄態不統一。

後端也記錄了一次登錄態在 yyy.baidu.com 下。

出現這種情況一般是登錄態失效了導致的,第一次登錄的時候瀏覽器沒有任何登錄態,登錄的時候是沒問題的。登錄過一次之後登錄態失效,也就是登錄服務下發的登錄態失效了,我們要跳轉登錄服務,然後登錄服務刷新了瀏覽器 .baidu.com 下的登錄態,但是yyy.baidu.com下失效的登錄態還存在,請求接口yyy.baidu.com的時候後端接收到的是失效的登錄態,所以總是說登錄失敗。

解決方法:

後端不要記錄登錄態,或者發現登錄態失效清除掉自己記錄的登錄態即可。

記錄該問題的原因:

這個問題不好查的原因是前端通過開發者工具只能看到xxx.baidu.com和.baidu.com下的cookie。也沒想到去看yyy.baidu.com 下的cookie,所以比較謎。

最後仔細分析請求發送所帶的cookie發現同一個key居然出現兩次,才根據這條線索有所收穫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章