为什么我的会话在我的网址中?

时间:2010-11-02 15:43:57

标签: java rest servlets spring-roo

所以我在这里完成了构建基本roo应用程序的步骤:http://static.springsource.org/spring-roo/reference/html/beginning.html

我启动了我的服务器并开始使用该应用程序,不禁注意到我的网址中有一个'jsessionid':

http://localhost:8080/pizzashop/pizzas;jsessionid=0A8EA5D9E8665C8AC80F141C3818F6BA?form

我根本不关心这个!为什么URL中需要会话ID?我可以摆脱这个吗?在那里拥有它似乎并不轻松。

4 个答案:

答案 0 :(得分:3)

这是标准的JavaEE行为,由servlet容器决定和控制。它与Spring无关。

请参阅this previous question以了解创建原因和时间,以及如何避免它。

答案 1 :(得分:1)

我在另一个问题中没有看到这个答案所以我想解释一下。会话在java中工作的方式我认为php是客户端首次使用它时,它会创建一个cookie并将JESSIONID附加到使用<c:url/>标记的所有URL。这样做的原因是因为客户端第一次访问页面时,服务器不知道客户端是否支持cookie。所以它同时做到了。下次,因为它看到了cookie,它实际上不再使用URL,因为它知道cookie有效。

有很多方法可以禁用它。如果您根本不使用会话,则可以通过在context.xml中放置cookies = false来禁用cookie。这仅禁用会话的cookie而不是常规cookie。然后,您可以使用urlrewrite来规定sessionid。

希望有所帮助。

答案 2 :(得分:0)

您使用的是哪个应用服务器?我知道Weblogic至少会在第一次调用时至少进行URL编码会话以及基于cookie的会话,以查看客户端是否启用了cookie。如果在下次调用时找不到与URL会话ID匹配的cookie,它将继续使用URL中的会话令牌。我知道他们什么时候让我们的公司转向使用Sharepoint进行网络抓取并搜索那些长时间抱怨这个问题的Windows网络人员,直到他们终于明白他们所要做的就是打开cookie会话支持。

答案 3 :(得分:0)

在我的情况下,当应用程序部署在我的桌面上而不是使用https时,就会发生这种情况。在weblogic.xml中的哪种情况下,cookie-secure应设置为false。否则cookie管理的会话ID将仅适用于https。

<wls:cookie-secure>false</wls:cookie-secure>