Javascript 用yui设置Django CSRF_令牌,但控制台显示';django.request禁止(CSRF令牌丢失或不正确)';
我在html中使用以下代码:Javascript 用yui设置Django CSRF_令牌,但控制台显示';django.request禁止(CSRF令牌丢失或不正确)';,javascript,python,django,yui,django-csrf,Javascript,Python,Django,Yui,Django Csrf,我在html中使用以下代码: <script> YUI().use('node', function(Y){ var token = Y.Node.create("{% csrf_token %}"); YUI.Env.CSRF_TOKEN = token._node.firstChild.getAttribute('value');; }); </script> 但当我提交所有数据时,控制台会显示django.request禁止(C
<script>
YUI().use('node', function(Y){
var token = Y.Node.create("{% csrf_token %}");
YUI.Env.CSRF_TOKEN = token._node.firstChild.getAttribute('value');;
});
</script>
但当我提交所有数据时,控制台会显示django.request禁止(CSRF令牌丢失或不正确)。:/dashboard/send_t2_data
我随后编辑YUI.Env.CSRF_令牌。但我的代码似乎有问题。为什么要配置名为YUI.Env.CSRF_TOKEN
的环境变量,但它无效
有人能帮我吗?非常感谢 我不是YUI专家,但您似乎忘记了使用
CSRFToken
cookie的标题X-CSRFToken
因此,获取csrftoken
cookie,并使用该值设置请求头X-csrftoken
。在纯javascript中(从我的一个项目复制/粘贴):
如果我理解您的代码:
Y.io('http://10.0.3.71/dashboard/send_t2_data', {
method: 'POST',
data: {'name':'123456'},
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': getcookie('csrftoken')
},
on: {
success: function(id, response) {
},
failure: function(id, response) {
}
}
});
其中函数getcookie('csrftoken')
获取名为csrftoken
var xhr = new XMLHttpResquest();
xhr.open('POST', YOUR-URL, YOU-DATA-AS-STRING);
xhr.setRequestHeader("X-CSRFToken", getCSRFCookie());
xhr.send(null);
Y.io('http://10.0.3.71/dashboard/send_t2_data', {
method: 'POST',
data: {'name':'123456'},
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': getcookie('csrftoken')
},
on: {
success: function(id, response) {
},
failure: function(id, response) {
}
}
});