Django navigator.sendbeacon csrf protection



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

您应该执行以下操作:

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

最新更新