Wildfly(市区)有时在URL中包含jsessionid

时间:2018-12-31 17:16:57

标签: jsp servlets wildfly jsp-tags undertow

我的环境:

  • Wildfly 14
  • 浏览器Firefox(启用了Cookie / JavaScript)
  • 使用response.encodeURL对链接的URL进行编码的简单webapp
  • web.xml:没有会话跟踪设置

有时链接的URL包含jsessionid ,请参见以下内容:

<a href="/VocabDB-1.0/MyVocab/Index;jsessionid=UGGha-TULRrZNFqQdtqdVlpBQQEDE-WwRrj4l78P.gpcit2ua7371tv9">Test Link</a>

大多数情况下,链接是

<a href="/VocabDB-1.0/MyVocab/Index">Test Link</a>

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

那是完全正常的:在第一个请求上,服务器不知道客户端是否接受cookie,因此它发送cookie ,并且还将会话ID存储在URL中。

在第二个请求上,如果它从cookie中接收到会话ID,它就知道该会话不再需要将其添加到URL中,因此就停止执行该操作。

顺便说一句,javadoc of encodeURL已经解释了:

  

通过包括会话ID来编码指定的URL,或者,如果不需要编码,则返回不变的URL。此方法的实现包括确定会话ID是否需要在URL中编码的逻辑。例如,如果浏览器支持cookie,或者关闭了会话跟踪,则不需要URL编码。

     

为了进行可靠的会话跟踪,应通过此方法运行servlet发出的所有URL。否则,URL重写不能与不支持cookie的浏览器一起使用。