Django 和 JEditable:CSRF 错误
Posted
技术标签:
【中文标题】Django 和 JEditable:CSRF 错误【英文标题】:Django and JEditable: CSRF error 【发布时间】:2012-10-12 17:43:17 【问题描述】:我开始在 Django 中使用Jeditable 插件并很快遇到了一个 CSRF 错误:“CSRF 验证失败。请求中止。”、“CSRF 令牌丢失或不正确”
在撰写本文时,Jeditable 插件似乎最后一次更新是在 2008 年——在此 Django 开始要求 CSRF tokens 用于 POST 请求之后的某个时间。
如何将 Django CSRF 数据添加到 Jeditable 中?
【问题讨论】:
【参考方案1】:通过 AJAX 请求提供 CSRF 令牌的首选方法是将 X-CSRFToken
标头设置为 CSRF 令牌的值。您需要修改构造的请求对象以设置标头值。
还提供了一个辅助函数来从 cookie 中获取 CSRF 令牌,而不是依赖于在模板中提供它,这大大简化了事情,即您不必内联发送 JS 代码或将令牌设置为模板本身的 JS 中的一个变量。
【讨论】:
【参考方案2】:这个问题的答案来自similar jeditable post on CSRF。 CSRF 令牌可以添加到“submitdata”变量中。
为 Django 帖子扩展 1st jeditable example 看起来像这样:
$(document).ready(function()
$('.edit').editable('http://www.example.com/save.php',
submitdata : csrfmiddlewaretoken : " csrf_token "
);
);
注意,为了显示“csrf_token”值而不是整个表单字段,“csrf_token”被包裹在 .. 而不是 % .. % 中。
【讨论】:
以上是关于Django 和 JEditable:CSRF 错误的主要内容,如果未能解决你的问题,请参考以下文章
django 访问url报错Forbidden (CSRF cookie not set.): xxx 问
(转载)django 访问url报错Forbidden (CSRF cookie not set.): xxx 问