0

我开始在 Django 中使用Jeditable插件并很快遇到了 CSRF 错误:“CSRF 验证失败。请求中止。”、“CSRF 令牌丢失或不正确”

在撰写本文时,Jeditable 插件似乎最后一次更新是在 2008 年——在这个 Django 开始要求CSRF 令牌用于 POST 请求之后的某个时间。

如何将 Django CSRF 数据添加到 Jeditable?

4

2 回答 2

6

这个问题的答案来自CSRF 上类似的可编辑帖子。CSRF 令牌可以添加到“submitdata”变量中。

扩展Django 帖子的第一个 jeditable 示例如下所示:

$(document).ready(function() {
   $('.edit').editable('http://www.example.com/save.php', { 
        submitdata : { csrfmiddlewaretoken : "{{ csrf_token }}"}
    });
});

请注意,为了显示“csrf_token”值而不是整个表单字段,“csrf_token”被包裹在 {{..}} 而不是 {% .. %} 中。

于 2012-10-22T20:45:03.693 回答
0

通过 AJAX 请求提供 CSRF 令牌的首选方法是将X-CSRFToken标头设置为 CSRF 令牌的值。您需要修改构造的请求对象以设置标头值。

还提供了一个辅助函数来从 cookie 中获取 CSRF 令牌,而不是依赖于在模板中提供它,这大大简化了事情,即您不必内联发送 JS 代码或将令牌设置为变量JS 在模板本身。

于 2012-10-22T20:54:20.393 回答