form表单提交,防止重复提交,加token-创新互联

大体步骤分为:

十多年的习水网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整习水建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“习水网站设计”,“习水网站推广”以来,每个客户项目都认真落实执行。

    1.通过java 生成随机数放在http 的header 里面

        String token = IdentityUtil.uuid32();
      getRequest().getSession().setAttribute("server_token", token);

   2.把生成token 放到隐藏域中,

String html = "";
      try {
         ctx.byteWriter.writeString(html);
      } catch (IOException e) {
         e.printStackTrace();
      }

输出到页面;

3.写个拦截器,页面传过来的token与java生成token进行匹配;

    public void intercept(DispatcherExecutor executor) {
      String server_token = PuffContext.removeSessionAttr("server_token");
      String client_token = PuffContext.getRequest().getHeader("Puff-ClientToken");
      if (StringUtil.empty(server_token) || StringUtil.empty(client_token) || !server_token.equals(client_token)) {
         if (PuffContext.ajax()) {
            RetMsg msg = RetMsg.error(RetCode.ILLEGAL_SUBMIT, "非法表单提交申请!");
            PuffContext.getResponse().setHeader("illegal_submit", "yes");
            executor.setResult(ViewFactory.json(msg));
         } else {
            throw new IllegalArgumentException("非法表单提交申请!");
         }
      } else {
         executor.execute();
      }

        //如果匹配了。重新生成token到页面,防止重复提交

      String token = IdentityUtil.uuid32();
      PuffContext.setSessionAttribute("server_token", token);
      PuffContext.getResponse().setHeader("server_token", token);

   }

4.页面

    $.ajax({
   url:"${ctxPath}/xx",
   data:$('#form').serialize(),

    type:"POST",
   datatype:"json",
   beforeSend: function(request) {

    //把token 放到http header 中

    request.setRequestHeader("Puff-ClientToken",$("#puff_beetl_client_token").val());
   },
   success:function(data){
      if(data.code=="403"){
         layer.close(index);
         Popbox.sureWithBtn(data.msg);
      }else{
         var msg=eval("("+data.msg+")");
         var code=msg.code;
         if(code==success){
            layer.close(index);
            window.location.href="${ctxPath}/success;
         }else{
            flag=false;
            layer.close(index);
            Popbox.sureWithBtn(msg.message);
         }

      }

   },
   complete:function(request){
      if(!flag){ //提交成功,就不改变http头部header,就是当失败才重新把token放到http header中
        $("#puff_beetl_client_token").val(request.getResponseHeader("server_token"));
      }
    },
   error:function(){
      layer.close(index);
   }});

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:form表单提交,防止重复提交,加token-创新互联
URL地址:http://ybzwz.com/article/dsgogg.html