首页 > 解决方案 > csrf.py _reject:禁止(CSRF 令牌丢失或不正确。)

问题描述

我收到 403 禁止错误并且WARNING csrf.py _reject: Forbidden (CSRF token missing or incorrect.)是 django 日志。

这是我的html,jquery-

function req() {
    var server_id = $( "#server option:selected" ).val();
    $.post("/sp/add_req", JSON.stringify({ cir: {{  cir  }}, server_id: server_id, csrfmiddlewaretoken: {{ csrf_token }}}), function (data) {
       console.log(data)
    });
}

和views.py-

def add_request(request):
    ....
    return JsonResponse({'success': True})

我在设置中有'django.middleware.csrf.CsrfViewMiddleware'。出了什么问题以及如何解决这个问题?

标签: djangodjango-csrf

解决方案


{% csrf_token %}将呈现为<input type="hidden" name="csrfmiddlewaretoken" value="xxxxxx">. 因此,您可以单独渲染它,然后使用 javascript 创建 JSON 对象。

var csrfToken = $('[name="csrfmiddlewaretoken"]').val();
var data = {'csrfmiddlewaretoken': csrfToken);

然后在您的帖子中发送数据。我更喜欢使用Fetch API来发帖。


推荐阅读