开发者社区> 问答> 正文

关于jquery的$.get()获取验证码的问题

提交方式是原始表单。

     <script type="text/javascript">
                function submitForm(){  
                    var date = new Date();
                    var ajax_path = "./getVcode.jsp?timestamp="+date.getTime();
                    var flag = false;
                    $.get(ajax_path , function(data){
                        var ajaxStr = data.toLowerCase();
                        ajaxStr = ajaxStr.replace(/\s+/g,"");
                        ajaxStr = ajaxStr.replace(/\r\n/g,"");
                        ajaxStr = ajaxStr.replace(/<\/?.+?>/g,"");
                        var inputStr = $("#vcode").val().toLowerCase();
                        var username = $("#username").val();
                        var password = $("#password").val();
                        if(''==username){
                            $("#msg").html("请输入用户名!");
                            $("#username").trigger("focus");
                            return false;
                        }
                        if(''==password){
                            $("#msg").html("请输入密码!");
                            $("#password").trigger("focus");
                            return false;
                        }
                        if(''==inputStr){
                            $("#msg").html("请输入验证码!");
                            $("#vcode").trigger("focus");
                            return false;
                        }
                        if(ajaxStr==inputStr){
                            $("#fm1").submit();
                        }else{
                            $("#msg").html("验证码错误!");
                            $("#vcode").trigger("focus");
                            return false;
                        }
                    });
            </script>

知道了其验证码是客户端对比的(其实这样还不如没有),也就是说有可能通过直接访问脚本中的211.85.162.240:8080/cas/getVcode.jsp?timestamp=...来直接获得正确的验证码,确实,当我访问了一次http://211.85.162.240:8080/cas/getVerificationCode?dateTime=...获取验证码图片(这是必须的一步),再访问http://211.85.162.240:8080/cas/getVcode.jsp?timestamp=...是可以得到验证码的,而在文件中通过jquery的$.get()方法却获取不到验证码,这是我的代码:

     <script src="Scripts/jquery-1.9.1.min.js"></script>
        <script>
            $(function () {
                var date = new Date();
                $("#randpic").attr("src", "http://211.85.162.240:8080/cas/getVerificationCode?dateTime=" + date.getTime());
                $("#get").click(function () {
                    var ajax_path = "http://211.85.162.240:8080/cas/getVcode.jsp?timestamp=1453276786065";
                    $.get(ajax_path, function (data) {
                        var ajaxStr = data.toLowerCase();
                        ajaxStr = ajaxStr.replace(/\s+/g, "");
                        ajaxStr = ajaxStr.replace(/\r\n/g, "");
                        ajaxStr = ajaxStr.replace(/<\/?.+?>/g, "");
                        $("#text").val(ajaxStr);
                    });
                });
            });
        </script>

不是说地址栏输入和$.get()本质是一样吗?那么我该如何编写才能在js中获取到正确的验证码呢?

展开
收起
吴孟桥 2016-06-03 15:17:40 3466 0
1 条回答
写回答
取消 提交回答
  • 用fiddler调试下,一个是,每次请求,都会刷新一次验证码,一个是,get虽然是获得验证码,但是服务器也许会判断session referer等。

    2019-07-17 19:26:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
23-Vue.js在前端...1506518547.pdf 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载