tomcat中的空会话路径是什么?

我前一天读过apache tomcat文档,我对emptySessionPath感到很困惑。 据我所知,如果设置为true,则emptySessionPath将存储在Web应用程序的根文件夹中。 请给出术语emptySessionPath的正确定义,如果设置为true和false会发生什么?

请指导我。谢谢。

emptySessionPath字段仅指出是否应将所有cookie存储在根URL路径中(如果emptySessionPath=true ),否则(否则)。

Apache的连接器使用它。 请在此处查看详细信息(这适用于AJP Connector,它是Connnector对象的一部分)。

这基本上意味着:

如果在tomcat中启用了emptySessionPath ,则JSESSIONID cookie将写入根“/”路径。 这意味着您使用的任何webapp都将使用相同的cookie。 每个webapp都会重新编写cookie的值来保存该webapp的会话ID,并且它们都是不同的。

当启用此function并使用不同webapps中的servlet时,来自同一用户的请求将最终覆盖cookie,以便当servlet再次与其进行交互时将创建一个新会话并松开它已设置的会话。

如果未设置emptySessionPath ,则浏览器中有多个cookie,每个webapp一个(根目录中没有),因此不同的webapps不会像上面那样重写彼此的cookie。

JSESSIONID是Webapp的ID会话。 请在此处查看完整说明。

更新:有关使用情况的信息有点过时 – 请参阅此处以获取有关如何为最近的tomcat设置会话路径的更新信息。

如果emptySessionPath设置为true,它将从JSESSIONID cookie中删除上下文路径。它将设置cookie路径为/。此属性可用于跨应用程序的身份validation机制。

正如您可能知道的,会话通常由cookie维护。 Cookie有两个值,用于确定浏览器是否应为特定请求( cookieDomaincookiePath)返回它们。 cookiePath必须与请求的匹配。

请求是

  /some/request/for/this.html 

Cookie将以cookie路径返回:

  / /some /some/request 

但不适用于cookie路径:

  /other 

根据规范,不同的Web应用程序之间不会共享会话,因此如果您在/foo下部署了Web应用程序foo.war ,则会话cookie路径默认设置为/foo

似乎Connector.emptySessionPath是Connector上的受保护变量。 我还没有读过代码 – 但我想这与Tomcat的单点登录或共享会话有关,你登录到一个上下文并在所有情况下进行身份validation – 在这种情况下,cookie路径必须是/为会话cookie 。

以防万一,对于web_app 3.0版,cookie配置是标准化的,因此相当于webapp 3.0中AJP的emptySessionPath是:

<会话配置>

<路径> /
<固定>真