开发者社区> 问答> 正文

微信H5提交,后台收到两次请求? 400 报错

微信H5提交,后台收到两次请求? 400 报错

微信H5form表单提交,后台偶尔会收到两次请求,需要过滤一次请求,如何来实现:

1、加同步锁,但是加锁会大大影响效率,锁是基于对象的锁,很明显在多用户的情况下锁会大大影响效率

2、用memcache缓存记录入参,处理完毕后释放缓存,并写下定时器定时轮训,如果存在相同的入参,进行定时器等待,直到缓存释放才处理

目前就是用第二条来做处理的,但是其逻辑肯定有问题,只能解决绝大部分问题,在不考虑改用ajax的情况下是否有解决方案,应为目前程序数据都是存在Session中,且存在跨域,ajax调用跨域可能存在Session失效

展开
收起
爱吃鱼的程序员 2020-06-04 13:16:03 824 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    防止重复提交的方法有很多啊,有必要搞的这么麻烦么。。。居然还考虑加锁。。。

    最常见两种方式:

    1.前端控制:点击后,禁掉按钮

    2.后端控制:生成令牌,保存到session,并隐藏在表单,一起提交,后端校验令牌是否有效,有效则通过,无效则回刷页面重新获取新令牌

    ######回复 @一气化三清 : 点击一次,收到两次请求,这怎么可能。。。还是检查一下代码吧######大哥,前台加了防止重复提交代码,感觉是浏览器的问题,用户点击一次后台收到两次请求######

    1、前端控制,要么禁用按钮,要么有个提交状态变量

    2、后端如果需要限制频率,memcache就可以通过设置有效期配合add操作,存在键的时候add会返回false,我一般用这个方式来简单的防止并发提交

    3、一次性令牌

    ######favor.ico  ######

    zepto 用了tap 事件? 以前遇到过这个坑

    ######

    这个是微信浏览器的问题,10s内会提交2次请求

    2020-06-04 14:22:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
微信广告引擎与播放节奏算法实践 立即下载
微信H5视频播放器在海量业务下的实践 立即下载
微信高效运维之路 立即下载