使用yui设置Django CSRF_令牌,但控制台显示'Django.请求禁止(CSRF令牌丢失或不正确。)'

2024-05-15 12:20:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在html中使用以下代码:

 <script>
  YUI().use('node', function(Y){
      var token = Y.Node.create("{% csrf_token %}");
      YUI.Env.CSRF_TOKEN = token._node.firstChild.getAttribute('value');;
  });
 </script>

我使用一些javascript代码发送POST方法:

^{pr2}$

但是当我提交所有数据时,控制台显示django.request Forbidden (CSRF token missing or incorrect.): /dashboard/send_t2_data。在

我跟着the official document编辑YUI.Env.CSRF_令牌. 但我的代码似乎有问题。为什么我要配置名为YUI.Env.CSRF_TOKEN的环境变量,但它不起作用?在

有人能帮我吗?谢谢!在


Tags: 代码envtokennodeusevarhtmlcreate
1条回答
网友
1楼 · 发布于 2024-05-15 12:20:22

我不是YUI专家,但似乎您忘记了头X-CSRFToken和{}cookie。在

因此,获取csrftokencookie dans设置请求头X-CSRFToken的值。在纯javascript中(从我的一个项目复制/粘贴):

var xhr = new XMLHttpResquest();
xhr.open('POST', YOUR-URL, YOU-DATA-AS-STRING);
xhr.setRequestHeader("X-CSRFToken", getCSRFCookie());
xhr.send(null);

如果我理解你的代码:

^{pr2}$

其中函数getcookie('csrftoken')得到名为csrftoken的cookie

相关问题 更多 >