我在一天前阅读了 Apache Tomcat 文档,但是对于 emptySessionPath 感到很困惑。据我所知,如果将其设置为 true,则 emptySessionPath 存储在 Web 应用程序的根文件夹中。请给出 emptySessionPath 的正确定义以及如果将其设置为 true 和 false 会发生什么?请指导我。谢谢。
emptySessionPath
字段表示是否将所有cookie存储在根URL路径/
中(如果emptySessionPath=true
),否则不会。这由Apache的连接器使用。有关详细信息,请参见此处(这是AJP连接器的说明,它是连接器对象的一部分)。emptySessionPath
,则JSESSIONID
cookie将写入根“ /”路径。这意味着您所在的任何Web应用程序都将使用相同的cookie。每个Web应用程序将重新编写cookie的值以保存该Web应用程序的会话ID,并且它们都是不同的。emptySessionPath
,则浏览器中有多个cookie,每个Web应用程序一个(没有在根目录下),因此不同的Web应用程序不会像上面那样重写彼此的cookie。
JSESSIONID
是您的Web应用程序的ID会话。有关完整说明,请参见此处。如果将emptySessionPath设置为true,则会从JSESSIONID cookie中消除上下文路径。它将设置一个cookie路径为/。此属性可用于跨应用程序身份验证机制。
如您所知,会话通常由cookie维护。一个cookie有两个值,决定它们是否应该被浏览器返回给某个请求:cookieDomain和cookiePath。 cookiePath 必须与请求的路径匹配。
发出请求。
/some/request/for/this.html
Cookie将返回带有cookie路径:
/
/some
/some/request
但不适用于cookie路径:
/other
/foo
下部署了Web应用程序foo.war
,则会话cookie路径默认设置为/foo
。/
。以防万一,对于web_app版本3.0,cookie配置已经标准化,因此在webapp 3.0中等同于AJP的emptySessionPath的内容是:
<session-config>
<cookie-config>
<path>/</path>
<secure>true</secure>
</cookie-config>
</session-config>
false
。此外,请阅读被阻止部分的最后一段,它解释了如果未设置emptySessionPath
的情况。 - Buhake SindiemptySessionPath
被设置时,我无法真正解释为什么一切都能正常工作。 - Buhake Sindi