您的位置:首页 > 其它

验证码总是失效问题

2015-11-13 16:06 288 查看
问题:

项目的验证码一直不正确,怎么输入都错,后来从网上找了各种解决方法,有说 src="" 会执行两次加载事件的,后来通过火狐浏览器去调试确实发现有这个问题,代码如下:

<img id="validImg" title="刷新验证码" src="getImage" onclick="this.src='getImage?'+Math.random();"/>

不过这个问题还是解决不了,因为不知道用什么方法来阻止它执行两次,后来又研究了好久还是不行。

定位问题:

一位同事看完之后发现每次请求的 jessionid 不一样,这时候意识到是跟 jessionid 应该有些关系,后来直接通过 ip 去访问发现验证码验证正常,通过域名访问不行,到这个时候终于知道问题的原因了,那就是:域名解析到 tomcat 之后出现了问题:就是 nginx 这边把请求指向了2个不同的 tomcat,但是本身这个项目没有使用 session

共享的机制,于是就出现了上面的问题,验证码在 tomcat1中生成,但是验证却在 tomcat2中进行验证,这样自然每次的验证码都是有问题的。

解决问题:

既然问题是因为 session 共享的问题,那么问题就简单了,我们直接在 nginx 端使用 ip_hash 来解决session 共享的问题(实际上对 ip 进行 hash 之后我们就不需要session 共享了)保证了每个ip访问的 tomcat 都是同一个,这样验证自然就通过了;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: