Django navigator.sendbeacon csrf保护

时间:2019-12-22 11:46:18

标签: django csrf django-csrf

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

1 个答案:

答案 0 :(得分:0)

您应该执行以下操作:

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);