考虑以下场景:页面{% csrf_token %}
以<form>
. 稍后此表单的提交(包括隐藏的 csrf_token)使用 ajax(post)执行,无需重新加载页面。
在服务器端,据我所知,令牌应该被发送回客户端并替换其中的那个<form>
,因为令牌可以根据其生命周期进行更新(顺便说一下,令牌何时重新生成?
)令牌并发送响应我正在考虑使用 django.middleware.csrf.get_token(),但在代码中它似乎只会返回从客户端发送的那个。
那么 get_token() 会返回最新的吗?
问问题
1667 次
1 回答
1
使用在您的 js 中检索您的 csrf 令牌
var csrf_token = $(this).data('csrf'); // $(this) refers to your form in your html
然后:
$('#yoursubmitbutton').click(function() {
$.ajax({
url: url,
type: "POST",
dataType: "json",
data: { csrfmiddlewaretoken: csrf_token, other_data: other_data },
success: function(data) {
if (data['success']=='true') {
// Handles success
} else {
// Handles failure failed.
}
// Any logic you want
},
error: function() {
// Error handling
}
})
}); // click event
于 2013-01-17T11:29:32.513 回答