起因是博主在登录后台的时候,一直提示验证码错误。进debug调试了一下,发现验证码正常生成,但是在校验的时候取出来的值却是NULL。于是把每次请求的sessionID打印出来,发现了很匪夷所思的一幕。
每次请求sessionID都不同!
控制台打印sessionId这种情况基本可以确定是请求的时候没有把session带上,然后浏览器又重新给你分配了一个session,导致每次请求session都不一样。
但是为什么之前一直都好好的,现在突然就冒出这个问题?首先,我的chrome肯定是启用了cookie,并且重置设置和清除了缓存,却还是不能解决问题。于是便在同样的条件下,用Firefox浏览器试了下,却又恢复正常了。没错,罪魁祸首就是chrome浏览器了!
上度娘搜了一下,看到了这篇文章https://blog.csdn.net/qq_37788558/article/details/104484888
再经过一顿摸索,找到了一种解决方法。直接上图(别问我为什么不换浏览器,谷歌,永远滴神)
在chrome中设置samesitesamesite有三个值
Strict
Lax
None
Strict是最高级的,之前一直默认是None。而Chrome80版本后将samesite默认设置成了Lax,可以看到有些请求将无法携带cookie,这可能就是导致session丢失的原因。
Laxchrome也经常会发出这样的警告
chrome警告这时候只要将Same-Site改回none就可以了。博主上面的做法是在chrome浏览器直接禁用samesite。
禁用 samesite 前禁用samesite后session就带过去了,浏览器也不会一直生成新的session。
禁用 samesite 后以上是本人的个人见解,有不对的地方欢迎指正。
另外附上几篇参考文章:https://blog.csdn.net/wanghongbiao1993/article/details/104795084
网友评论