今天面试被人问到一个幂等性问题,求大家解惑
資深大佬 : xiaofan2 8
他说的是如果一个人不小心点击两次,生成不同请求如何保证幂等?两次不同请求代表 token 不同或者前端发送的随机数不同,那如何防止??
大佬有話說 (29)
他说的是如果一个人不小心点击两次,生成不同请求如何保证幂等?两次不同请求代表 token 不同或者前端发送的随机数不同,那如何防止??
总的来说方案很多,还是要根据实际场景设计。
不过业务上两次不同的请求为啥要防止
这个最终想问的是如何判断是两次有效请求还是一次?
举几个场景:
1.需要支持快速多次点击的场景:比如点外卖,或者淘宝下单,有时候需要快速多次点击增加数量按钮。
2.需要禁止快速多次点击的场景:比如提交订单按钮,按一次就够了。多按属于业务上的无效操作。
3.只允许慢速多次点击的场景:比如视频网站的发送弹幕按钮。
4.只允许慢速单次点击的场景:比如在线考试的多选题。
如果真像主说的两次请求有不同的 token,那是后端设计的问题,前端只能用 js 控制一下重复提交,不可能完全禁止。