我有一个奇怪的错误:当我第一次在某些浏览器中打开页面时,所有引用都有jsessionid参数(例如<a href="/articles?name=art&jsessionid=5as45df4as5df"..>)。
<a href="/articles?name=art&jsessionid=5as45df4as5df"..>
当我按F5键或通过其他任何方式刷新页面时,所有这些东西都消失了,并且一切正常,直到关闭浏览器为止(所有选项卡也应关闭)。当我再次打开它时,我看到了这个奇怪的jsessionid参数。
我使用jstl <c:url..>标记创建所有URL。
<c:url..>
我已经读过一段时间,如果禁用了cookie,但jsessionid是cookie的替代方法,但是启用了cookie,实际上我不使用cookie。
这不是错误,是设计使然。创建新会话时,服务器不确定客户端是否支持cookie,因此它将生成一个cookie以及URL上的jsessionid。当客户端第二次返回并显示cookie时,服务器知道不需要jsessionid,并在其余会话中删除它。如果客户端返回时没有cookie,则服务器需要继续使用jsessionid重写。
您可能未明确使用Cookie,但确实隐含了一个会话,并且容器需要跟踪该会话。