从node js到django的csrf问题

2024-02-15

我想将 csrftoken 从 node.js 传递到 django。我的 server.js 中有这段代码

socket.on('unread global', function (data) { 
var values=querystring.stringify();

var options = {
  hostname:'localhost',
  port:'8000',
  path:'/chat/global_unread/',
  method:'POST',
  headers:{
    'Content-Type':'application/x-www-form-urlencoded',
    'Cookie': 'csrftoken=' + data.csrf,
    'Content-Length':values.length
}
}

我的数据来自调用我的 server.js 的 jquery 函数

var datos = { // datos is the data that will be send to Node.js

        user: USER_PK_CHAT,
        csrf : window.CSRF_TOKEN

      };

  socket.emit('unread global', datos);

但最后我总是在控制台中得到同样的错误

失败原因给出:

CSRF token missing or incorrect.

一般来说,当存在真正的跨站请求伪造时,或者当

对于 POST 表单,您需要 确保:

您的浏览器正在接受 cookie...继续 有人可以帮助我吗?


CSRF中间件寻找以下COOKIE:

request.COOKIES[settings.CSRF_COOKIE_NAME]

并将其与 POST csrfmiddlewaretoken 进行比较。

因此,您必须确保对节点的调用在以下位置设置了正确的 cookie 名称:

'Cookie': 'csrftoken=' + data.csrf`

而且,POST 包括csrfmiddlewaretoken。在 javascript 中访问 COOKIE 并将其作为正确的令牌发送是安全的,只需确保使用 CSRF_COOKIE_SECURE 即可。更好的方法通常是让django将token作为输入字段,并单独设置cookie。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从node js到django的csrf问题 的相关文章