JSSessionID后缀的用途是什么?

JSSessionID后缀的用途是什么?,session,cookies,httpsession,jsessionid,Session,Cookies,Httpsession,Jsessionid,使用浏览器对我的服务进行身份验证后,我发现一个具有以下密钥\值对的cookie集: JSESSIONID=40d4b01c47ddb858718291d319a1a817d3037fdc6f2c341c195a94dc6ee8e8a1.e38Lb3qTb3aKai0RbxeMahqNbN90; path=/MyService; secure 注意后缀(即在“.”之后):e34Mc3uLa3yPbO0La3aNa3eTc38Ke0) 当我使用JavaServetl的API获取会话id(javax

使用浏览器对我的服务进行身份验证后,我发现一个具有以下密钥\值对的cookie集:

JSESSIONID=40d4b01c47ddb858718291d319a1a817d3037fdc6f2c341c195a94dc6ee8e8a1.e38Lb3qTb3aKai0RbxeMahqNbN90; path=/MyService; secure
注意后缀(即在“.”之后):e34Mc3uLa3yPbO0La3aNa3eTc38Ke0

当我使用JavaServetl的API获取会话id(
javax.servlet.http.HttpSession.getId()
)时,我得到以下值

40d4b01c47ddb858718291d319a1a817d3037fdc6f2c341c195a94dc6ee8e8a1
这与我刚才提到的cookie变量值的第一部分相同

我曾经尝试在ColdFusion(CF)上维护多个HTTP请求之间的会话(如果您不知道CF是什么,这没关系,它只是一个开发应用程序的平台),如果我将cookie变量JSESSIONID设置为我在本问题开头提到的整个值,我就无法维护会话。为了正确地维护会话,我必须发送会话id的第一部分(即在“.”之前)


所以我的问题是,为什么ServletAPI返回JSESSIONID的一部分,而从服务器返回的cookie值有一个后缀?此后缀com来自何处以及它的用途是什么?

例如,后缀可以是服务器的主机名。或者它可能是一个随机值。它的生成、配置和意义取决于所使用的应用程序服务器,因为它不是servlet规范的一部分

在非集群设置中,确保会话实际上属于服务器非常有用。想象一下,负载平衡设置中存在粘性会话和服务器故障。请求现在被定向到另一台服务器。理论上,这个服务器也可以有一个会话id相同。然后用户将进入一个不属于他的会话。附加服务器唯一后缀可使应用程序服务器不还原不是在同一服务器中创建的会话

您可以在这里了解到这一点:这里讨论了JBoss7和wildfly 8.1在这一行为上的差异