zoukankan      html  css  js  c++  java
  • 解决微信端公众号网页获取短信验证码ajax重复调用两次的问题

    问题背景介绍:

    微信公众号网页开发的时候,点击发送短信验证码,如果响应时间超长,目前测试是10秒左右(这个10秒左右,是我自己多次测试总结出来的规律)

    超过10秒左右,就会自动请求第二遍,这个问题挺恶心。上网搜了搜,发现也有很多小伙伴遇到这个问题了,比如下面这位:

    https://blog.fishlee.net/2016/07/07/double-request-from-wechat-client-with-ajax/

    接着上面这个小伙伴的说,我和后端java小伙伴问了一下,搞出了一个方案,我这边微信前端ajax 请求的时候,发送一个uuid ,

    也就是说ajax 异步调用发送短信验证码接口的时候,上传参数加一个uuid,然后java后端接收这个参数,留着做判断用。往下看...

    这个是个字符串,挺复杂的,实现方法如下:

     1         getUuid: function(){
     2             var len=32;//32长度
     3             var radix=16;//16进制
     4             var chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
     5             var uuid=[],i;
     6             radix=radix||chars.length;
     7             if(len){
     8                 for(i=0;i<len;i++)uuid[i]=chars[0|Math.random()*radix];
     9             } else {
    10                 var r;uuid[8]=uuid[13]=uuid[18]=uuid[23]='-';uuid[14]='4';
    11                 for(i=0;i<36;i++){
    12                     if(!uuid[i]){
    13                         r=0|Math.random()*16;uuid[i]=chars[(i==19)?(r&0x3)|0x8:r];
    14                     }
    15                 }
    16             }
    17             return uuid.join('');
    18         }

    解决思路:上传上面的这个uuid,然后在java后端那边存起来,如果调用了微信服务端偷着给调用了第二次请求,比对一下这个uuid的值,微信偷着给第二次请求的时候,这个uuid 肯定是一样的,然后java端判断,如果uuid一样的话,就在java端,睡眠掉第二个请求进程,保留第一个;

    这样第一个就会继续,也会返回成功了。具体java代码,我也不会写,我只是个web前端er。

    好了,思路就是这样。

  • 相关阅读:
    第四章 分布式扩展
    第三章 2.性能压测,容量问题
    第三章 1.云部署,打包上传
    MySQL语法大全
    Python随手记
    Python操作Mysql中文乱码问题
    Python基础函数
    破解电信校园网路由限制
    ThinkPHP扩展函数的三个方法
    $_SERVERS预定义变量
  • 原文地址:https://www.cnblogs.com/Sinhtml/p/10219979.html
Copyright © 2011-2022 走看看