3

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

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

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

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

4

4 回答 4

4

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

请参阅上一个问题以了解创建它的原因和时间,以及如何避免它。

于 2010-11-02T15:47:18.220 回答
1

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

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

希望有帮助。

于 2010-11-02T15:54:07.757 回答
0

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

于 2010-11-02T16:15:36.820 回答
0

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

<wls:cookie-secure>false</wls:cookie-secure>
于 2018-04-05T18:54:29.123 回答