java - 如何防止将jboss节点名称添加到sessionid
问题描述
最近,我们将应用服务器从 JBoss EAP6.2 升级到了 EAP7.0。
即使它运行非 HA 配置文件 aka standalone.xml
,JBoss也会在cookiejboss.node.name
的末尾添加。JSESSIONID
例如,
JSESSIONID
当tHSf9v23SSDBMqJ1O7XFJZ9....
请求到达浏览器时,Spring Boot 会生成一个cookie tHSf9v23SSDBMqJ1O7XFJZ9.master:<jboss.node.name>
,这会导致一些兼容性问题。
我通过手动调用response.addCookie
. 在这种情况下,它不会master
向 cookie 添加后缀。但是,如果 Spring 自己写入 cookie,则似乎 JBoss 将其拾取并添加master
后缀。我知道这个案例可能有点令人困惑(对我来说),我很乐意提供更多信息。
解决方案
一个旧线程,但对于那些仍然偶然发现它的人:
在 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
推荐阅读
- php - 如何链接到页面的特定部分 HTML PHP
- c# - 当后端代码中的简单键值变量工作相同时,为什么要使用 redis 作为缓存层?
- google-apps-script - Google Slides Apps 脚本检索页面中的形状
- python-3.x - 在 KNeighborsClassifier 中使用自定义指标时,我不断收到“TypeError:只有整数标量数组可以转换为标量索引”
- java - JavaFX - 在使用选项卡时将 GUI 拆分为单独的类
- jquery - 通过函数调整电子窗口大小
- scheme - 匹配方案中的括号
- android - 当我使用 adb 显示 /sys/kernel/debug/tracing/available_filter_functions 时没有这样的设备
- python - 初始化以迭代抽象pyomo模型中的集合?
- angular-cli - 运行 ng serve -o 时出现错误