【问题标题】:Why is my session id in my url?为什么我的 url 中有会话 ID?
【发布时间】:2011-05-04 00:33:56
【问题描述】:
【问题讨论】:
标签:
java
rest
servlets
spring-roo
【解决方案2】:
我在另一个问题中没有看到这个答案,所以我想解释一下。会话在 java 和我认为 php 中的工作方式是,当客户端第一次出现时,它会创建一个 cookie 并将 JESSIONID 附加到所有使用 <c:url/> 标记的 url。这样做的原因是因为客户端第一次访问页面时,服务器不知道客户端是否支持 cookie。所以它两者兼而有之。下一次,因为它看到了 cookie,它实际上将不再使用 URL,因为它知道 cookie 有效。
有很多方法可以禁用它。如果您根本不使用会话,则可以通过在 context.xml 中放置 cookies=false 来禁用 cookie。这只会禁用会话的 cookie,而不是常规 cookie。然后,您可以使用 urlrewrite 发送 sessionid。
希望对您有所帮助。
【解决方案3】:
您使用的是什么应用服务器?我知道至少在第一次调用时,Weblogic 至少会始终执行 URL 编码会话以及基于 cookie 的会话,以查看客户端上是否启用了 cookie。如果在下次调用时找不到与 URL 会话 id 匹配的 cookie,它将继续使用来自 URL 的会话令牌。我知道当他们将我们的公司切换到使用 Sharepoint 进行网络爬虫和搜索时,Windows 网络人员就这个问题抱怨了很长时间,直到他们终于明白他们所要做的就是打开 cookie 会话支持。
【解决方案4】:
在我的情况下,当应用程序部署在我的桌面上而不使用 https 时,就会发生这种情况。在weblogic.xml 的这种情况下,cookie-secure 应设置为 false。否则 cookie 管理的会话 ID 将只能通过 https 工作。
<wls:cookie-secure>false</wls:cookie-secure>