前一天我读过apache tomcat文档,我对emptySessionPath
感到很困惑。据我所知,如果设置为true,emptySessionPath
将存储在Web应用程序的根文件夹中。请给出emptySessionPath
这个术语的正确定义,如果设置为true和false会发生什么?
请指导我。谢谢。
答案 0 :(得分:7)
emptySessionPath
字段只是说明是否应将所有Cookie存储在根网址路径/
中(如果emptySessionPath=true
)或不存在(否则)。
Apache的连接器使用它。查看详细信息here(这适用于AJP Connector,它是Connnector对象的一部分)。
这基本上意味着:
如果启用了
emptySessionPath
tomcat,JSESSIONID
cookie是 写入根“/”路径。这个 意味着你所使用的任何webapp 将使用相同的cookie。每个webapp 将重新写入cookie的值 保持该webapp的会话ID,和 他们都是不同的。启用此功能后,将使用servlet 使用不同的webapps,请求 从同一个用户到另一个用户 servlet最终会覆盖 cookie,以便当servlet是 再次与它互动将创造 一个新的会话并松开会话 已经成立了。
如果未设置
emptySessionPath
,则存在 是浏览器中的多个cookie, 每个webapp一个(没有 root),所以不同的webapps不是 将对方的cookie重写为 上方。
JSESSIONID
是您的Webapp的ID会话。请参阅完整说明here。
更新:有关用法的信息有些过时 - 有关如何为最近的tomcat设置会话路径的更多最新信息,请参阅here。
答案 1 :(得分:5)
如果emptySessionPath设置为true,它将从JSESSIONID cookie中删除上下文路径。它将设置一个cookie路径到/。该属性可用于跨应用程序的身份验证机制。
答案 2 :(得分:4)
您可能知道会话通常由cookie维护。 Cookie有两个值,用于确定浏览器是否应为特定请求 cookieDomain 和 cookiePath 返回它们。 cookiePath 必须与请求的匹配。
请求
/some/request/for/this.html
Cookie将以cookie路径返回:
/
/some
/some/request
但不适用于cookie路径:
/other
按规范,不同的Web应用程序之间不会共享会话,因此如果您在foo.war
下部署了Web应用程序/foo
,则会话cookie路径默认设置为{{1} }。
似乎Connector.emptySessionPath是Connector上的受保护变量。我还没有读过代码 - 但我想这与Tomcat的单点登录或共享会话有关,你登录到一个上下文并在所有情况下进行身份验证 - 在这种情况下,cookie路径必须是/foo
用于会话cookie。
答案 3 :(得分:0)
以防万一,对于web_app 3.0版,cookie配置是标准化的,所以相当于webapp 3.0中AJP的emptySessionPath是:
<会话配置>
< cookie的配置>
<路径> /< /路径>
<安全>真< /安全>
< / cookie的配置>
< /会话配置>