【发布时间】:2013-11-06 09:47:58
【问题描述】:
即使我在 HTML 模板中包含 csrf 令牌,我在使用 JQuery 表单验证和 Django inside modal 时也遇到了以下问题。如果我提交表单而不使用 JQuery 验证它就可以了。
Forbidden (403)
CSRF verification failed. Request aborted.
在服务器端我使用 Django 表单验证,没什么特别的。
提前谢谢你:)
这是我的代码:
html
<form class="form-inline" id="add-subtitle-modal" action="/add_subtitle/" role="form" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
{{object.description}}
</div>
...
<button class="btn btn-danger" type="submit">save</button>
js
$('#add-subtitle-modal').validate({
rules: {
...
}
etc
submitHandler: function(form) {
var $form = $(form);
var $inputs = $form.find("input, select, button, textarea");
$inputs.prop("disabled", true);
//let the backend to manage submiting
$form.submit();
}
【问题讨论】:
-
对不起,伙计。我盲目地认为涉及 ajax,我的错。关于您的问题,您能否检查一下 csrf 令牌是否与所有 POST 输入一起发送?
-
我该怎么做?因为我不能打印 request.body 因为服务器禁止它。在视图中呈现它的 csrf 令牌。 :(
-
您可以简单地打开 chrome dev 控制台并查看已发送的帖子数据..
-
已发送。我还在views.py中添加了 ctx.update(csrf(request)) 并且仍然禁止。好像是个鬼:(
-
是的,看起来很奇怪,你能把完整的代码放在github上吗?
标签: jquery django validation csrf