微信H5提交,后台收到两次请求? 400 报错
微信H5form表单提交,后台偶尔会收到两次请求,需要过滤一次请求,如何来实现:
1、加同步锁,但是加锁会大大影响效率,锁是基于对象的锁,很明显在多用户的情况下锁会大大影响效率
2、用memcache缓存记录入参,处理完毕后释放缓存,并写下定时器定时轮训,如果存在相同的入参,进行定时器等待,直到缓存释放才处理
目前就是用第二条来做处理的,但是其逻辑肯定有问题,只能解决绝大部分问题,在不考虑改用ajax的情况下是否有解决方案,应为目前程序数据都是存在Session中,且存在跨域,ajax调用跨域可能存在Session失效
防止重复提交的方法有很多啊,有必要搞的这么麻烦么。。。居然还考虑加锁。。。
最常见两种方式:
1.前端控制:点击后,禁掉按钮
2.后端控制:生成令牌,保存到session,并隐藏在表单,一起提交,后端校验令牌是否有效,有效则通过,无效则回刷页面重新获取新令牌
######回复 @一气化三清 : 点击一次,收到两次请求,这怎么可能。。。还是检查一下代码吧######大哥,前台加了防止重复提交代码,感觉是浏览器的问题,用户点击一次后台收到两次请求######1、前端控制,要么禁用按钮,要么有个提交状态变量
2、后端如果需要限制频率,memcache就可以通过设置有效期配合add操作,存在键的时候add会返回false,我一般用这个方式来简单的防止并发提交
3、一次性令牌
######favor.ico ######zepto 用了tap 事件? 以前遇到过这个坑
######这个是微信浏览器的问题,10s内会提交2次请求
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。