会话跟踪机制


会话跟踪机制

Cookie

通过 HTTP cookie 的会话跟踪是最常用的会话跟踪机制,且所有 servlet 容器都应该支持。

容器向客户端发送一个 cookie,客户端后续到服务器的请求都将返回该cookie,明确地将请求与会话关联。会话跟踪 cookie 的标准名字必须是JSESSIONID。容器也允许通过容器指定的配置自定义会话跟踪cookie的名字。

所有 servlet 容器必须提供能够配置容器是否标记会话跟踪 cookie 为HttpOnly的能力。已建立的配置必须应用到所有上下文中还没有建立特定的配置(见 SessionCookieConfig javadoc 获取更多细节)。

如果 web 应用为其会话跟踪 cookie 配置了一个自定义的名字,则如果会话 id 编码到 URL 中那么相同的自定义名字也将用于 URI 参数的名字(假如 URL 重写已开启)。

SSL会话

安全套接字层(Secure Sockets Layer),在 HTTPS 使用的加密技术,有一种内置机制允许多个来自客户端的请求被明确识别为同一会话。Servlet容器可以很容易地使用该数据来定义会话。

URL 重写

URL 重写是会话跟踪的最低标准。当客户端不接受 cookie 时,服务器可使用 URL 重写作为会话跟踪的基础。URL 重写涉及添加数据、会话 ID、容器解析 URL 路径从而请求与会话相关联。

会话 ID 必须被编码为 URL 字符串中的一个路径参数。参数的名字必须是jsessionid。下面是一个 URL 包含编码的路径信息的例子:

http://www.myserver.com/catalog/index.html;jsessionid=1234

URL 重写在日志、书签、referer header、缓存的 HTML、URL工具条中暴露会话标识。在支持 cookie 或 SSL 会话的情况下,不应该使用 URL 重写作为会话跟踪机制。

会话完整性

当服务的来自客户端的请求不支持使用 cookie 时,Web 容器必须能够支持 HTTP 会话。 为了满足这个要求, Web 容器通常支持 URL 重写机制。