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有两个值,用于确定浏览器是否应为特定请求( cookieDomain和cookiePath)返回它们。 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是:
<会话配置>
<路径> / 路径>
<固定>真安全>
cookie的配置>
会话配置>