首页 > 解决方案 > 如何防止将jboss节点名称添加到sessionid

问题描述

最近,我们将应用服务器从 JBoss EAP6.2 升级到了 EAP7.0。

即使它运行非 HA 配置文件 aka standalone.xml,JBoss也会在cookiejboss.node.name的末尾添加。JSESSIONID

例如,

JSESSIONIDtHSf9v23SSDBMqJ1O7XFJZ9....请求到达浏览器时,Spring Boot 会生成一个cookie tHSf9v23SSDBMqJ1O7XFJZ9.master:<jboss.node.name>,这会导致一些兼容性问题。

我通过手动调用response.addCookie. 在这种情况下,它不会master向 cookie 添加后缀。但是,如果 Spring 自己写入 cookie,则似乎 JBoss 将其拾取并添加master后缀。我知道这个案例可能有点令人困惑(对我来说),我很乐意提供更多信息。

标签: javaspring-bootjbosswildflyjsessionid

解决方案


一个旧线程,但对于那些仍然偶然发现它的人:

在 EAP7/Wildfly11+ 中,会话 cookie 将具有以下形式的值:

<sessionId>.<instanceId>

instanceId取自 Undertow 子系统配置属性的位置instance-id。默认情况下,它将jboss.node.name在独立模式和<serverGroup>:<hostname>域模式下设置为系统属性的值。

您可以通过 Undertow 子系统配置自定义 instanceId 值:或者通过standalone.xml:

 <subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="${myValue}">

或者通过相应的cli:

/subsystem=undertow:write-attribute(name=instance-id, value=myvalue)

在这种情况下,您会得到一个看起来像这样的最终 JSession id:

JSESSIONID=FdEyt_nZvyAV1gKpQ_3ZsSYeu41JycphvMdHcYeT.myvalue

推荐阅读