我现在真的很沮丧,因为我几个小时都无法解决问题。我几乎完成了基于Apache Shiro,Google Guice,Jersey REST和前端react + redux的Web应用程序的构建。直到今天,它在Google Chrome上确实可以正常工作,但是Chrome突然无法保持会话,因为JSESSIONID随每个请求而变化。我无法弄清楚问题,另一方面,Firefox运行正常。这真让我感到困惑。我在网上搜索了可能的解决方案,但能够找到此问题,但所提供的解决方案均不适合我。
我在浏览器中提出了Screenshot个请求。第一个REST请求运行良好,然后由于某种原因请求了一个favicon.ico文件,该文件设置了一个新的JSESSIONID。从那时起,会话丢失。我不知道请求可能来自哪里。我从不使用收藏夹图标...
如果您需要其他信息,请告诉我!如果有人能指出正确的方向,我将非常感激。我坐在这里待了几个小时,试图解决问题。
最诚挚的问候!
答案 0 :(得分:1)
我的天哪,经过数小时的研究,我发现了问题所在,而favicon的请求仅在Chrome上失败了。问题在于我的案件中的跳船重定向规则。我有以下规则:
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
<Set name="regex">^(?:(?!\/rest\/|\/resources\/|\/login).)*$</Set>
<Set name="replacement">/sua-ui/resources/secure/index.jsp</Set>
</New>
</Arg>
</Call>
我现在改为
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
<Set name="regex">^(?:(?!\/rest\/|\/resources\/|\/login|favicon).)*$</Set>
<Set name="replacement">/sua-ui/resources/secure/index.jsp</Set>
</New>
</Arg>
</Call>
这意味着从重定向中排除favicon解决了我的问题,但是为什么失败的favicon请求设置了一个我真不知道的新JSESSIONID cookie。很高兴我的应用程序可以再次使用!