验证码总是失效问题
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 都是同一个,这样验证自然就通过了;
项目的验证码一直不正确,怎么输入都错,后来从网上找了各种解决方法,有说 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 都是同一个,这样验证自然就通过了;
相关文章推荐
- 适配器 QQ发送页面
- 微信支付(不得不吐槽腾讯这个坑货)
- 手机自动化测试:Appium源码分析之跟踪代码分析九
- javaEE之------Servlet通过web.xml传参数(生命周期)
- iOS中类单例方法的一种实现
- jsp传中文参数Java后台获取乱码解决办法
- SDK23 读取联系人 权限拒绝
- iOS中类单例方法的一种实现
- iOS中类单例方法的一种实现
- Android Context完全解析
- Leetcode156: Sort List
- Android 2种图片(相册--拍照)的上传方式
- Null导致闪退crash,解决方法
- 【Leetcode】202-Happy Number【Java实现】【Easy】
- 2 rocketmq mqadmin 的用法详解
- diff比较两个文件的差异
- [转]div与span区别及用法
- 手机自动化测试:Appium源码分析之跟踪代码分析八
- 微信jssdk录音功能开发记录
- myBatis配置和使用