我收到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”。有什么问题以及如何解决这个问题?
答案 0 :(得分:1)
{% csrf_token %}
将呈现为<input type="hidden" name="csrfmiddlewaretoken" value="xxxxxx">
。因此,您可以单独呈现它,然后使用javascript创建JSON对象。
var csrfToken = $('[name="csrfmiddlewaretoken"]').val();
var data = {'csrfmiddlewaretoken': csrfToken);
,然后将数据发送到您的帖子中。我更喜欢使用Fetch API进行发布。
答案 1 :(得分:0)
使用AJAX时,您需要将CSRF令牌与请求一起传递。在官方指南中查看更多信息:https://docs.djangoproject.com/en/2.1/ref/csrf/#ajax