Django navigator.sendbeacon csrf 保护

Posted

技术标签:

【中文标题】Django navigator.sendbeacon csrf 保护【英文标题】:Django navigator.sendbeacon csrf protection 【发布时间】:2020-04-14 01:39:34 【问题描述】:

navigator.sendBeacon('endpoint/', data) 有问题。我有一个错误禁止(CSRF 令牌丢失或不正确。),因为它通过 POST 方法传递数据。我知道我应该设置 csrf 令牌,但我不知道在这种情况下如何设置它,有人知道应该怎么做吗?我正在使用 Django==2.2.6。

【问题讨论】:

【参考方案1】:

您应该执行以下操作:

var data = new FormData();        
data.append('csrfmiddlewaretoken', 'csrf_token');
navigator.sendBeacon('endpoint/',data)

如果它是一个 js 文件,那么在你的 html 中你应该创建一个类似的变量

<script>
    var csrftoken = ' csrf_token ';
</script>

然后你可以在像这样追加的时候使用它:

data.append('csrfmiddlewaretoken', csrftoken);

【讨论】:

以上是关于Django navigator.sendbeacon csrf 保护的主要内容,如果未能解决你的问题,请参考以下文章

Django之路

Django系列

django 错误

mac电脑安装django ,运行django报错解决

Django 大神带你飞系列~走进Django

django的文档