Liberty如何为特定应用选择正确的多JSESSIONID Cookie?
当客户端发送多个路径不同的JSESSIONID Cookie(含根路径Cookie)时,Liberty对非根路径应用的Cookie匹配遵循以下逻辑:
- 优先匹配精确路径Cookie:Liberty会首先查找与当前应用部署路径完全一致的
JSESSIONIDCookie。比如应用部署在/order路径下,就优先选用路径为/order的Cookie,忽略其他路径的Cookie。 - 无精确匹配时降级匹配宽泛路径:如果找不到与应用路径精确匹配的
JSESSIONIDCookie,Liberty才会尝试使用路径范围更大的Cookie(比如根路径/的Cookie)。
结合你提到的idReuse配置补充说明:
- 根路径应用启用
idReuse后,允许其会话ID被其他应用复用,但非根路径应用未启用该配置时,默认不会复用其他应用的会话ID。 - 这种场景下的间歇性会话丢失,大概率和Cookie匹配逻辑相关:当客户端偶尔未携带非根路径的
JSESSIONIDCookie时,Liberty会尝试使用根路径的Cookie,但因为非根应用未开idReuse,无法复用该会话ID,只能创建新会话,导致原有会话的状态丢失;而当客户端携带了非根路径的Cookie时,Liberty正常使用原有会话,就不会出现问题,从而表现为间歇性的会话丢失现象。
内容的提问来源于stack exchange,提问作者Doug Breaux
相关产品推荐
相关产品推荐

