记录一次cookie导致登录失败的惨案
現(xiàn)象描述:
前端登錄成功后并沒(méi)有從后端那里拿到登錄信息,換句話說(shuō)登錄服務(wù)告訴我們登錄成功了,但是后端卻說(shuō)我們沒(méi)有登錄成功。
背景:
因?yàn)榍昂蠖朔蛛x,所以前后端項(xiàng)目部署在兩個(gè)子域名下。
因?yàn)橐蛲ǖ卿洃B(tài),需要調(diào)用登錄服務(wù),登錄服務(wù)會(huì)在 .baidu.com 下寫入登錄態(tài)。
前端域名:xxx.baidu.com
后端域名:yyy.baidu.com
原因:
后端拿到的登錄態(tài)和登錄服務(wù)下發(fā)的登錄態(tài)不統(tǒng)一。
后端也記錄了一次登錄態(tài)在 yyy.baidu.com 下。
出現(xiàn)這種情況一般是登錄態(tài)失效了導(dǎo)致的,第一次登錄的時(shí)候?yàn)g覽器沒(méi)有任何登錄態(tài),登錄的時(shí)候是沒(méi)問(wèn)題的。登錄過(guò)一次之后登錄態(tài)失效,也就是登錄服務(wù)下發(fā)的登錄態(tài)失效了,我們要跳轉(zhuǎn)登錄服務(wù),然后登錄服務(wù)刷新了瀏覽器 .baidu.com 下的登錄態(tài),但是yyy.baidu.com下失效的登錄態(tài)還存在,請(qǐng)求接口yyy.baidu.com的時(shí)候后端接收到的是失效的登錄態(tài),所以總是說(shuō)登錄失敗。
解決方法:
后端不要記錄登錄態(tài),或者發(fā)現(xiàn)登錄態(tài)失效清除掉自己記錄的登錄態(tài)即可。
記錄該問(wèn)題的原因:
這個(gè)問(wèn)題不好查的原因是前端通過(guò)開發(fā)者工具只能看到xxx.baidu.com和.baidu.com下的cookie。也沒(méi)想到去看yyy.baidu.com 下的cookie,所以比較謎。
最后仔細(xì)分析請(qǐng)求發(fā)送所帶的cookie發(fā)現(xiàn)同一個(gè)key居然出現(xiàn)兩次,才根據(jù)這條線索有所收獲。
總結(jié)
以上是生活随笔為你收集整理的记录一次cookie导致登录失败的惨案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JS相关知识总结(一)
- 下一篇: ES6中块级作用域下的函数声明