背景:最近做一个登录功能,发现登录后,跳转到其他页面,session中的用户信息马上消失了。按理说session是浏览器和服务器的会话作用域,没到过期时间不会销毁啊,所以应该不是session失效。然后我以为是重定向的问题,但是以前的项目重定向也没问题,而且session是是浏览器和服务器的会话作用域,跟重定向根本没啥关系。最后通过获取不同页面的session id观察,发现每次跳转页面都生成了新的session。然后我就蒙了,显然一个会话只有一个session,怎么会跳转一次变一次呢。
然后就是一系列的搜索排查,发现问题出在url上。
这是出问题的url
localhost//myproject/search?...
这是正常的的url
localhost/myproject/search?...
问题:很显然,上面有问题的url多了一个斜杆,这也就导致SpringMVC不认识这个项目名,因为含有斜杆这个特殊符号。所以它每次都给页面返回一个新的session,导致原来的session失效了。
其实这个问题比较少见,但还是记录一下,避免以后再次遇坑,毕竟这个问题搞了我好久,想哭!