Django CSRF 检查因 Ajax Post 请求而失败
正如 Django 文档中所述,启用 CSRF 保护有助于防止恶意跨站点请求攻击。按照说明,您尝试通过 Ajax 发布实现 CSRF 检查,但仍然遇到拒绝。
要解决此问题,请考虑以下步骤:
验证令牌是否存在:
确保 JavaScript 代码正在获取 CSRF 令牌并将其存储在名为 csrftoken 的变量。在设置标头之前应存在此令牌:
$.post("/memorize/", data, function (result) { ... }); var csrftoken = getCookie('csrftoken'); xhr.setRequestHeader("X-CSRFToken", csrftoken);
替代方法(使用数据正文):
而不是设置标头,您可以将 CSRF 令牌嵌入到 Ajax 请求的数据正文中,如下所示如下:
$.ajax({ data: { csrfmiddlewaretoken: '{{ csrf_token }}', ... // Other data }, });
完成这些步骤后,重新提交 Ajax 请求以查看 CSRF 检查是否成功通过。
以上是为什么我的 Django CSRF 检查因 Ajax POST 请求而失败?的详细内容。更多信息请关注PHP中文网其他相关文章!