- 客户端设备清除所有 cookie(因此,
JSESSIONID
客户端上不存在 cookie)。 - 客户端向 Spring 控制器发出请求。
- Spring Interceptor 拦截请求。
preHandle()
在Spring 拦截器方法的第一行中,我记录了 of 的值,request.getRequestedSessionId()
并且日志显示了 this 的值,这应该意味着 aJSESSIONID
实际上是从客户端收到的。但是,我的 Fiddler 日志显示JSESSIONID
请求中没有发送任何内容。
此外,request.getSession(false).getId()
返回相同JSESSIONID
的 .
那么,会话是如何/何时/为什么JSESSIONID
在拦截器到达之前创建的?如果客户端没有发送 cookie,我希望request.getRequestedSessionId()
为空。JSESSIONID
以及如何防止像这样“即时”创建会话?
如果重要的话,被请求的资源是这样实现的:
@Controller
public class LoginController {
.
.
.
@RequestMapping(value = { "/controller/index.do" })
public final ModelAndView login(final HttpServletRequest request, final HttpServletResponse response) {
.
.
.
编辑 -正如这个答案中提到的,如果还没有会话,我不理解每次对 JSP 页面的调用都会隐式创建新会话。但这会在到达拦截器之前发生吗?
EDIT2 -拦截器是一个实例org.springframework.web.servlet.handler.HandlerInterceptorAdapter