每次页面刷新时都会创建一个新的JSESSIONID,但不会从所有浏览器创建

时间:2014-08-16 03:30:55

标签: session grails jetty shiro

我在Jetty 9.1.5上使用带有shiro插件1.2.1的Grails 2.4.3 问题是每次重新加载页面时都会生成一个新的JSESSIONID(Shiro不应该这样做)。

但它真的很奇怪,因为情况并非总是这样: 如果我从Windows 7机器上使用Chrome,Firefox或IE,我就会遇到问题。 如果我在使用Ubuntu的计算机上使用Chrome或Firefox,则行为是正确的(即使重新加载页面也会保留JSESSIONID cookie)

我尝试使用其他人在其他帖子中建议的其他Cookie名称,但这并没有解决问题;每次刷新页面时都会再次生成带有新名称的cookie。

我在grails应用程序中使用的serverURL的形式为http://subdomain2.subdomain1.com,因为它是建议的(最后没有斜线)

我检查了所有浏览器的请求,它们看起来都一样(除了用户代理之外都有相同的标题)所以我真的不明白为什么服务器在某些情况下每次刷新都会创建一个新会话它不会出现在其他一些人身上。

我在'sessionCreated'上有一个HttpSessionListener监听器,所以我可以很好地看到它。 ...但我不明白为什么,这让我疯了。 有什么建议?

1 个答案:

答案 0 :(得分:0)

我们在使用Vaadin和shiro方面遇到了类似的问题。当webapplication在url中使用JSESSION时,事情变得混乱。

对我们有帮助的是将此添加到web.xml,告诉网络服务器仅使用cookie进行会话ID跟踪:

<session-config>
    <cookie-config>
        <http-only>false</http-only>
    </cookie-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>