我在提交带有POST请求的表单时遇到问题,如果我"垃圾邮件" (在页面重定向之前,我可以多次单击“提交”按钮)每次按下按钮时,它都会创建一个请求的提交按钮。它为什么这样做?是因为CSRF令牌没有重生吗?是因为我在localhost上运行,我真的不知道到底发生了什么,我开始失去它。
所以发生的事情是,每次点击表单上的提交按钮,都会插入许多重复数据条目。
我已经搜索过,在Stack上发现了另一篇与我有同样问题的帖子。
Prevent creating multiple entries with Laravel 4
但答案并不能让我满意..必须有更好的方法来解决这个问题并适用于所有的帖子请求。
修改的 这是指向我的控制器的链接,其中包含beforeFilter,我的资源控制器和视图。
答案 0 :(得分:0)
CSRF不会阻止发出请求。它只会阻止处理请求。如果(在chrome中),您打开开发人员工具并检查网络选项卡,则只有第一个请求在重定向之前显示为黑色(其余请求为红色,表示错误。)
如果您希望在页面重新加载之前禁用请求之后禁用请求,则可以使用jQuery或Javascript禁用提交按钮。
$(document).ready(function(){
$('#your-submit-button-id').click(function(){
$('#your-submit-button-id').attr('disabled', true);
});
});
答案 1 :(得分:0)
CSFR(跨站请求伪造)不是用于验证请求的数量,而是用于验证SESSION。在浏览器中清除cookie和缓存后,令牌应重新生成。
如果您想阻止提交多个请求,请停用上面提到的提交按钮,或使用标记:https://jeykeu.wordpress.com/2012/03/09/jquery-prevent-multiple-ajax-requests/
答案 2 :(得分:0)
就像添加以下功能:"this.disabled=true;this.value='Submiting...';this.form.submit();"
按钮的“ onclick”事件将对其进行处理。
<button type="submit" onclick="this.disabled=true;this.value='Submiting...';this.form.submit();" class="btn">Submiting...</button>