firefox下CaptchaRender的问题? 400 报错
@JFinal 你好,想跟你请教个问题:
我尝试使用CaptchaRender生成验证码,在后台验证的时候,发现在火狐浏览器下无法验证成功,chrome及IE下没问题不知为何?
另外还想请教波总,jfinal提供的两个连接池应该如何选择?
注:火狐版本41.0 且 cookies未禁用
controller代码如下:
public class HelloController extends Controller { private static final String RANDOM_CODE_KEY = "code"; public void index() { CaptchaRender img = new CaptchaRender(RANDOM_CODE_KEY); render(img); } public void login() { String inputRandomCode = getPara("inputRandomCode").toUpperCase(); boolean loginSuccess = CaptchaRender.validate(this, inputRandomCode, RANDOM_CODE_KEY); if (loginSuccess) { renderText("success"); } else { renderText("failure"); } } }
用的是哪个 jfinal 版本,则期版本对 CaptchaRender.validate(...) 方法来说是大小写敏感的,建议升级到最新版本的 jfinal。
连接池建议使用 DruidPlugin。
######http://bbs.csdn.net/topics/390664819%3Fpage%3D1######回复 @JFinal : 使用火狐时,F5刷新http://localhost/hello,后台会有两次请求,应该是这里的问题~######回复 @大白0-0 : 如果确定使用的是 jfinal 2.0 自带的 CaptchaRender 的功能,就不会有大小写问题,已做过处理,建议仔细单步调试一下 CaptchRender.validator(...) 方法内部######inputRandomCode.equalsIgnoreCase(controller.getCookie(randomCodeKey)) 返回false 45682961b1376968975f75adc03881b3 b8e2f0316ed0c046f60a4a11cf6dec33 哈希值不同,不知哪里的问题######回复 @大白0-0 : 单步调试跟踪一下,看一下是为什么验证不成功######改为在html中请求图片就没问题了。
在请求中直接将验证码返回会出问题,后台会有有两次请求,这应该是火狐浏览器的问题。login.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <img src="/hello/img"/> </body> </html>
HelloController.java
public class HelloController extends Controller { private static final String RANDOM_CODE_KEY = "validatecode"; public void index() { //new User().set("name", "James").set("age", 25).set("sex", "nan").save(); //CaptchaRender img = new CaptchaRender(RANDOM_CODE_KEY); //render(img); render("/login.html"); } public void login() { String inputRandomCode = getPara("inputRandomCode"); System.out.println(inputRandomCode+"-"+inputRandomCode.length()); System.out.println(HashKit.md5(inputRandomCode)); System.out.println(this.getCookie(RANDOM_CODE_KEY)); boolean loginSuccess = CaptchaRender.validate(this, inputRandomCode, RANDOM_CODE_KEY); if (loginSuccess) { renderText("success"); } else { renderText("failure"); } } public void img(){ CaptchaRender img = new CaptchaRender(RANDOM_CODE_KEY); render(img); } }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。