Django CSRF 检查因 Ajax POST 请求而失败
背景:
Django 使用跨站点请求伪造(CSRF)保护机制,防止恶意网站提交表单或触发对用户的操作代表。但是,这可能会在发出 AJAX POST 请求时导致问题。
解决方案:
AJAX POST 请求必须在其数据正文中包含 CSRF 令牌才能传递 Django 的 CSRF查看。使用 $.ajax 函数,只需将 csrfmiddlewaretoken 键值对添加到数据对象即可实现:
$.ajax({ data: { somedata: 'somedata', moredata: 'moredata', csrfmiddlewaretoken: '{{ csrf_token }}' },
Django 模板语言支持一个特殊变量 {{ csrf_token }},它检索 CSRF 令牌并将其插入 JavaScript 代码中。此令牌用于验证请求是否来自预期来源并防止 CSRF 攻击。
通过将 csrfmiddlewaretoken 合并到 AJAX POST 请求的数据正文中,您可以确保 Django 识别并接受该请求,从而允许它来处理数据并执行所需的操作。
以上是为什么我的 Django CSRF 检查 AJAX POST 请求失败?的详细内容。更多信息请关注PHP中文网其他相关文章!