我想知道我是否正确地做了它以及它是否安全。通常我使用Jquery在AJAX请求上发送csrf标记,如下所示:
$.ajax({
method: "POST",
...
data: {...'csrfmiddlewaretoken': '{{csrf_token}}'},
});
它有效,但documentation并没有说出做这样的事情。这与文档推荐的内容有什么区别(获取cookie并在标题上设置)?
答案 0 :(得分:1)
在标题上使用上下文变量的缺点是:
csrfmiddlewaretoken
data
Django docs为您提供了复制粘贴js代码,您可以在项目级别的脚本中包含并忘记csrfmiddlewaretoken
答案 1 :(得分:1)
从cookie中读取值然后设置标题的优点是重复性较低。如果您的ajax请求位于静态javascript文件中(如果它不是Django模板,则您无法使用{{ csrf_token }}
)
但是,如果您乐意将csrf标记添加到每个ajax post请求的数据中,那很好,那样做就没有问题。