慎用localhost+端口作为域名测试代码,某些浏览器无法保存localhost的JSESSIONID

起因是我启动了一个项目 localhost:8080/login,在登录的时候一直报错提示验证码错误。
生成图形验证码时会将原始字符保存到当前会话的Session中,在用户点击登录提交后,先从Session中获取验证码原文和表单中的验证码作对比再执行后面的登录逻辑。测试中发现提交表单的SessionId和验证码的SessionId不一致,浏览器没有保存第一次请求的SessionId,导致获取验证码时又重新生成了会话。 搜索相关资料后得出原因,浏览器保存Cookie和域名中的点号相关,如果是localhost会无法保存JSESSIONID。如果用IP和域名都是可以的。Google到有的问答中说在Chrome中修复了这个BUG,但在我测试的版本 63.0.3239.132(正式版本) (64 位)中仍存在此问题。

发表评论

电子邮件地址不会被公开。 必填项已用*标注