如何防止将jboss节点名称添加到sessionid

Bun*_*ner 8 java jboss jsessionid wildfly spring-boot

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

即使它运行非HA配置文件standalone.xml,JBoss 也会jboss.node.nameJSESSIONIDcookie 结束时添加.

例如,

春天引导产生JSESSIONIDtHSf9v23SSDBMqJ1O7XFJZ9....,当请求到达浏览器时,cookie成为tHSf9v23SSDBMqJ1O7XFJZ9.master:<jboss.node.name>导致一些兼容性问题.

我通过手动调用进行了一些实验response.addCookie.在这种情况下,它不会master为cookie 添加后缀.但是,如果Spring自己编写cookie,那么JBoss似乎会选择它并添加master后缀.我知道这个案子可能有点混乱(对我而言),我很乐意提供更多信息.

ynt*_*ual 1

一个古老的线索,但对于那些仍然偶然发现它的人来说:

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

<sessionId>.<instanceId>
Run Code Online (Sandbox Code Playgroud)

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

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

 <subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="${myValue}">
Run Code Online (Sandbox Code Playgroud)

或者通过相应的 cli:

/subsystem=undertow:write-attribute(name=instance-id, value=myvalue)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您将获得最终的 JSession id,如下所示:

JSESSIONID=FdEyt_nZvyAV1gKpQ_3ZsSYeu41JycphvMdHcYeT.myvalue
Run Code Online (Sandbox Code Playgroud)