【问题标题】:Wildfly (Undertow) includes jsessionid in URL sometimesWildfly (Undertow) 有时在 URL 中包含 jsessionid
【发布时间】:2019-05-28 03:05:09
【问题描述】:

我的环境:

  • 野蝇 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>

有什么想法吗?谢谢!

【问题讨论】:

    标签: jsp servlets wildfly jsp-tags undertow


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢!我刚检查过。 jsessionid 仅包含在第一个请求的链接中!
    猜你喜欢
    • 2015-02-14
    • 2015-02-20
    • 2015-05-31
    • 2018-07-17
    • 2020-12-20
    • 2012-10-05
    • 2014-10-26
    • 2021-05-02
    • 2017-04-12
    相关资源
    最近更新 更多