登录期间设置了域转发时出现HTTP状态408错误

在我的网站wemanageloans.com上,许多用户在尝试使用正确的凭据登录时收到以下错误:

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

只有当他们尝试从URL登录时才会发生这种情况: http : //www.wemanageloans.com

我已将域转发设置为URL:http: //59.176.19.181 : 8080

如果用户尝试直接访问上述基于IP地址的URL,则不会发生此错误。

此外,虽然某些用户始终会发生此错误,但它会间歇性地发生在某些用户身上。

请告知域转发可能出现的问题以及我可能需要配置的内容。

我使用j_security_check使用Tomcat 6’身份validation。

当我访问该网站时,我发现会话cookie没有立即设置 – 甚至在第一次登录尝试后也没有。

我想会话开始有问题。

由于“转发”是通过掩盖您网站的框架完成的,我建议停止这一点:它会混淆相当多的事情发生。 要么获得正确的DNS解析,使用mod_jk或类似的方式通过apache提供tomcat内容,或者只是重定向人员直接使用IP。 这很可能会解决你的问题(在这种情况下我从未见过它们)。 如果直接使用IP,则会产生难看的URL,因此正确的DNS解析应该是您的目标。

编辑:不知道你是否已经这样做了:请记住 – 使用j_security_check – 你不能只是向用户提供登录表单,而是需要依靠tomcat来呈现它(AFAIK)。 因此你的页面http://59.176.19.181:8080/personalcredit/loans.htm (这是显示的第一页)不应该有登录表单,而是必须将页面声明为protected,以便tomcat它本身为用户提供配置的登录页面。 如果loan.htm没有被声明保护,那么tomcat没有理由开始一个可以解释观察到的行为的新会话。

但这并不能解释不确定性。

可以缓存相关。 尝试发送标题,如:

 Cache-Control: no-cache,no-store,must-revalidate Pragma: no-cache 

只是为了统治这个选项……

无论如何408是关于超时,可能是你的服务器需要更多的时间来路由这些请求? 不太可能,但可能。

另一种方法是将tomcat server.xml设置为侦听端口80,以确保使用端口8080不会导致问题…

server.xml需要看起来像sthing:

  

心连心

我通过在login.htmllogin-failure.html中添加Interval来修复此问题

 setInterval(function(){ location.reload(true); },5*60*1000); 

login.htmllogin-failure.html是相同的。 login-failure.html除外包含文本“ 用户名或密码不正确

我似乎找到了一个非常简单的解决方案

    

感谢Greg http://readlist.com/lists/tomcat.apache.org/users/7/35987.html