我们的网络应用程序有两个不同的命名空间。出于此问题的目的,它们将被称为/packageOne
和/packageTwo
。
在/packageOne
内访问Struts操作时,一切都按设计运行,因为JSESSIONID
不会更改。
在特定类型的计算机(公司笔记本计算机属于特定部门的员工)上,JSESSIONID
在转到Struts操作时发生更改在/packageTwo
。此外,cookie中的其他属性随着更改而消失,因此似乎已经创建了一个新的cookie。回到/packageOne
内的Struts操作可以撤消此更改,恢复之前的JSESSIONID
Cookie。
根据我们的理解,只要特定的用户会话尚不存在,就会创建一个新的JSESSIONID
。在这种情况下,我们想知道为什么命名空间的切换意味着现有的用户会话不再适用,因此需要创建新的JSESSIONID
。
编辑:这就是我们web.xml
的样子。它几乎是默认的。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Project Name</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
编辑2 :这就是我们发现JSESSIONID
已更改
/packageOne
名称空间中)之后,我们将进入主页面,这是同一名称空间中的另一个Struts操作/packageOne
JSESSIONID
作为其中一行的名称并注明了该值。我们还注意到还有其他字段,例如csrf_token
,APISID
,HSID
,NID
等。/packageTwo
)中继续执行Struts操作后,我们在开发者控制台中注意到,具有相同名称的cookie现在具有不同的JSESSIONID
值(在“值”列中)并且大多数其他领域都缺失了,除了一个,我忘记了它。我知道目前还不清楚我们要求的是什么。我们正在尝试找出这种异常的原因,就像我们的测试环境,登台和许多其他生产环境一样,这种情况根本不会发生(JSESSIONID
和即使在/packageTwo
)中切换到Struts操作后,cookie中的其他字段仍保持不变。
编辑3 :有关发生此异常的有问题环境的更多信息: