12 回答
![?](http://img1.sycdn.imooc.com/5333a1a90001c8d802000200-100-100.jpg)
TA贡献1785条经验 获得超8个赞
点击之后立即禁用该按钮,如果提交失败,再恢复该按钮,否则转成功页面。
或者点击之后,弹出一个遮罩。
不过,上述两个方案都要用到 js。为什么不想用 js 呢?
![?](http://img1.sycdn.imooc.com/5923e28b0001bb7201000100-100-100.jpg)
TA贡献1725条经验 获得超7个赞
可以从前台和后台来做控制:
添加前台控制逻辑,当用户点击发帖时,disable“发帖”按钮
添加后台控制逻辑,当发帖请求发送过来时,查看此人是否发送标题和内容一样的帖子,如果存在,则禁止此重复帖子的创建
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
TA贡献1821条经验 获得超6个赞
这个问题只靠前端是解决不了的。
加缓存,单机用map,分布式用redis做缓存。
用Mysql的储存过程,把并发的压力交给数据库
加锁,乐观锁或者悲观锁
唯一键
![?](http://img1.sycdn.imooc.com/5458506b0001de5502200220-100-100.jpg)
TA贡献1898条经验 获得超8个赞
那就在后台自己写一个csrf
好了,提供一下思路,自动生成一个key,提交内容的时候把key带过去,如果二者相同,就重置key或者清掉,如果不同,就是重复提交了
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
TA贡献1813条经验 获得超2个赞
form表单post过去一个隐藏域的随机字符串 放到session里
程序那边接收到这个随机字符串去和session里的字符串对比 如果相同则提交 不相同则提示错误 对比的时候要重置一下这个session就可以了
![?](http://img1.sycdn.imooc.com/5333a1660001394602000200-100-100.jpg)
TA贡献1862条经验 获得超6个赞
1.JS验证,提交后禁用提交按钮
2.服务端验证,每次刷新页面,页面中都会产生token,提交数据到服务端时判断token是否有效,然后处理数据并销毁token,如果前端重复提交肯定处理不了,因为token被销毁了
![?](http://img1.sycdn.imooc.com/54584ef20001deba02200220-100-100.jpg)
TA贡献1865条经验 获得超7个赞
表单中加上这么一行
<input type="hidden" name="token" value="随机字符串">
然后服务器判断一下,重复的value不处理就好了。
非常原始的方法
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
TA贡献1826条经验 获得超6个赞
谢邀,阻止提交的方式大概分为两个方向
1. 服务端生成一个token放在页面中,提交当前页面时验证这个token,这也是防csrf的一个方法哦
2.正如前面各位同学说的在前端做处理,加一个类似disable就是禁止的那一堆玩意儿,ajax的话可以写在beforsend这里
添加回答
举报