Django navigator.sendbeacon csrf保护

标签 django csrf django-csrf

我对 navigator.sendBeacon('endpoint/', data) 有疑问。我有一个错误 Forbidden (CSRF token missing or incorrect.) 因为它通过 POST 方法传递数据。我知道我应该设置 csrf token ,但我不知道在这种情况下如何设置,有人知道应该怎么做吗?我正在使用 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);

关于Django navigator.sendbeacon csrf保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59443915/

相关文章:

django - 了解 Django CSRF_COOKIE_SAMESITE 和 CSRF_TRUSTED_ORIGINS

angularjs - Django Rest框架+AngularJS : Correct way for CSRF Protection?

javascript - 不明白Django的CSRF保护是如何工作的

在第三方网站的 iframe 中访问时,未为子域设置 Django csrf cookie

mysql - Django 1.1 中大型数据库的 manage.py 数据转储(创建测试数据库)

django - 重置 Django 迁移 : relation "django_migrations" does not exist

php - Yii 2.0 AJAX 请求的 CSRF 验证

security - 我是否面临以不需要用户登录的 POST 形式进行 CSRF 攻击的风险?

python - django RequestFactory 丢失 url kwargs

django - 使用 Django ORM 自连接