【问题标题】:HTTP Status 408 error with tomcat form based authentication基于 tomcat 表单的身份验证的 HTTP 状态 408 错误
【发布时间】:2014-01-05 08:50:28
【问题描述】:

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

这是我的问题:

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

HTTP 状态 408 - 已超过登录过程允许的时间。如果您想继续,您必须点击两次并重新点击您请求的链接或关闭并重新打开您的浏览器

如果有人可以帮助我解决这个问题,我们将不胜感激。

【问题讨论】:

  • 您使用的是 Internet Explorer 吗?您是否在其他浏览器(例如 Firefox 或 Chrome)中看到了这一点?
  • 是的@Will Keeling 我正在使用 Internet Explorer,我的应用程序只能在 Internet Explorer 上运行。

标签: jsp jakarta-ee tomcat


【解决方案1】:

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

1.修改 Internet Explorer cookie 处理首选项

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

2。在生成的 HTML 中添加 http-equiv 元标记

<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");

【讨论】:

    【解决方案2】:

    添加一个计时器以在 25 分钟左右后刷新您的登录页面。
    比如:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 2014-12-13
      • 1970-01-01
      • 2018-10-01
      相关资源
      最近更新 更多