关于Chrome80版本后SameSite=Lax导致跨域请求session丢失问题

起因是博主在登录后台的时候,一直提示验证码错误。进debug调试了一下,发现验证码正常生成,但是在校验的时候取出来的值却是NULL。于是把每次请求的sessionID打印出来,发现了很匪夷所思的一幕。

每次请求sessionID都不同!

控制台打印sessionId

这种情况基本可以确定是请求的时候没有把session带上,然后浏览器又重新给你分配了一个session,导致每次请求session都不一样。

但是为什么之前一直都好好的,现在突然就冒出这个问题?首先,我的chrome肯定是启用了cookie,并且重置设置和清除了缓存,却还是不能解决问题。于是便在同样的条件下,用Firefox浏览器试了下,却又恢复正常了。没错,罪魁祸首就是chrome浏览器了!

上度娘搜了一下,看到了这篇文章https://blog.csdn.net/qq_37788558/article/details/104484888

再经过一顿摸索,找到了一种解决方法。直接上图(别问我为什么不换浏览器,谷歌,永远滴神)

在chrome中设置samesite

samesite有三个值

Strict

Lax

None

Strict是最高级的,之前一直默认是None。而Chrome80版本后将samesite默认设置成了Lax,可以看到有些请求将无法携带cookie,这可能就是导致session丢失的原因。

Lax

chrome也经常会发出这样的警告

chrome警告

这时候只要将Same-Site改回none就可以了。博主上面的做法是在chrome浏览器直接禁用samesite。


禁用 samesite 前

禁用samesite后session就带过去了,浏览器也不会一直生成新的session。

禁用 samesite 后

以上是本人的个人见解,有不对的地方欢迎指正。

另外附上几篇参考文章:https://blog.csdn.net/wanghongbiao1993/article/details/104795084

https://blog.csdn.net/qq_37060233/article/details/86595102

你可能感兴趣的:(关于Chrome80版本后SameSite=Lax导致跨域请求session丢失问题)