基于tomcat表单的身份验证的HTTP状态408错误

时间:2013-12-17 14:28:10

标签: jsp java-ee tomcat

我的应用程序是用 JSP 编写的,并且具有基于表单的身份验证。我正在使用Apache和Tomcat 7。

这是我的问题:

有时会话超时以及尝试重新登录应用程序时,会显示以下408错误消息:

HTTP状态408 - 已超出登录过程所允许的时间。如果您希望继续,则必须再次点击两次,然后重新点击您要求的链接或关闭并重新打开浏览器

感谢有人能帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

我认为这归功于Internet Explorer的会话cookie处理。您可以尝试两种可能的解决方案。

<强> 1。修改Internet Explorer cookie处理首选项

点击工具 - &gt;单击“Internet选项”,然后单击“隐私”选项卡,再单击“高级”按钮。 选中“覆盖自动Cookie处理”,然后确保将第一方和第三方Cookie设置为接受,并选中“始终允许会话Cookie”。

<强> 2。将http-equiv元标记添加到生成的HTML

<meta http-equiv="Cache-Control" content="no-store,no-cache,must-revalidate"> 
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Expires" content="-1"> 

或者,这些可以作为标题直接添加到响应中。

response.addHeader("Cache-Control", "no-store,no-cache,must-revalidate");
response.addHeader("Pragma", "no-cache");
response.addHeader("Expires", "-1");

答案 1 :(得分:0)

添加计时器以在25分钟左右后刷新登录页面。
类似的东西:

<script>
setTimeout(function(){ location.reload(); },1000 * 60 * 25);
</script>

(确保您的登录页面也没有缓存标题)

说明: 使用FORM auth-method时,还要指定yourLoginPage.jsp。

此页面由j_security_check呈现。我相信在呈现页面时,通过servlet-session跟踪页面呈现时间。换句话说,安全检查期望从呈现登录页面到提交登录页面的时间应该在合理的时间跨度内发生。 Tomcat的默认会话超时为30分钟,因此将登录页面超时设置为小于30分钟,或者小于指定的会话超时。