Java 为什么我的url中有我的会话id?

Java 为什么我的url中有我的会话id?,java,rest,servlets,spring-roo,Java,Rest,Servlets,Spring Roo,因此,我在这里完成了构建基本roo应用程序的步骤: 我启动了服务器并开始玩应用程序,忍不住注意到我的url中有一个“jsessionid”: 我一点也不在乎!为什么URL中需要会话id?我能处理掉这个吗?这似乎不是RESTful的。这是标准的JavaEE行为,由servlet容器指定和控制。这与春天无关 查看以了解创建它的原因和时间,以及如何避免它。我在另一个问题中没有看到这个答案,所以我想解释一下。会话在java和我认为php中的工作方式是,当客户端第一次出现时,它会创建一个cookie,并

因此,我在这里完成了构建基本roo应用程序的步骤:

我启动了服务器并开始玩应用程序,忍不住注意到我的url中有一个“jsessionid”:


我一点也不在乎!为什么URL中需要会话id?我能处理掉这个吗?这似乎不是RESTful的。

这是标准的JavaEE行为,由servlet容器指定和控制。这与春天无关


查看以了解创建它的原因和时间,以及如何避免它。

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

有很多方法可以禁用此功能。如果您根本不使用会话,则可以通过在context.xml中放置cookies=false来禁用cookies。这只会禁用会话的Cookie,而不是常规Cookie。然后可以使用URLRewite来stip sessionid


希望对您有所帮助。

您使用的是什么应用程序服务器?我知道Weblogic至少会在第一次调用时执行URL编码会话,以及基于cookie的会话,以查看客户端上是否启用了cookie。如果在下一次调用中找不到与URL会话id匹配的cookie,它将继续使用URL中的会话令牌。我知道,当他们将我们的公司切换到使用Sharepoint进行web爬网和搜索时,windows web人员抱怨了很长一段时间,直到他们最终明白,他们所要做的就是打开cookie会话支持。

在我的情况下,这是在应用程序部署到我的桌面上而不使用https时发生的。在这种情况下,在
weblogic.xml
中,
cookie-secure
应设置为false。否则,cookie管理的会话ID只能通过https工作

false

如何在不禁用会话的情况下避免它是很重要的。