登录期间设置了域转发时出现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.html和login-failure.html中添加Interval来修复此问题
setInterval(function(){ location.reload(true); },5*60*1000);
login.html和login-failure.html是相同的。 login-failure.html除外包含文本“ 用户名或密码不正确 ”