Jquery 德扬戈。AJAX这样发送csrf令牌是错误的吗?
我想知道我做的是否正确,是否安全。通常,我使用Jquery在AJAX请求上发送csrf令牌,如下所示:Jquery 德扬戈。AJAX这样发送csrf令牌是错误的吗?,jquery,ajax,django,Jquery,Ajax,Django,我想知道我做的是否正确,是否安全。通常,我使用Jquery在AJAX请求上发送csrf令牌,如下所示: $.ajax({ method: "POST", ... data: {...'csrfmiddlewaretoken': '{{csrf_token}}'}, }); 这是可行的,但政府并没有说要做这样的事情。这与执行文档建议的操作(获取cookie并在标题中设置)有什么区别 在标题上使用上下文变量的缺点是: 您应该始终在数据中包含c
$.ajax({
method: "POST",
...
data: {...'csrfmiddlewaretoken': '{{csrf_token}}'},
});
这是可行的,但政府并没有说要做这样的事情。这与执行文档建议的操作(获取cookie并在标题中设置)有什么区别 在标题上使用上下文变量的缺点是:
数据中包含csrfmiddlewaretoken
Django文档为您提供了复制粘贴js代码,您可以在项目级别的脚本中包含这些代码,而不必考虑csrfmiddlewaretoken从cookie中读取值,然后设置标头,这样做的优点是重复性较小。如果ajax请求位于静态javascript文件中(如果不是Django模板,则不能使用
{{csrf_token}}
),它也可以工作
但是,如果您很乐意将csrf令牌添加到每个ajax post请求的数据中,那么这样做没有问题。但是这与文档编写的内容不是完全不同吗?根据文档,人们应该得到cookie并在标题上设置。在这里,我将它作为一个上下文变量放在DOM中,并将其放在request.body.Yes中,从cookie中获取并放到头中。这就是js所做的。您不需要在查询数据中显式地设置它,django将自动处理事情