csrf.py_reject:禁止(CSRF 令牌丢失或不正确。)
csrf.py _reject: Forbidden (CSRF token missing or incorrect.)
我收到 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'。出了什么问题,如何解决?
使用 AJAX 时,您需要随请求一起传递 CSRF 令牌。查看更多官方指南:https://docs.djangoproject.com/en/2.1/ref/csrf/#ajax
{% csrf_token %}
将呈现为 <input type="hidden" name="csrfmiddlewaretoken" value="xxxxxx">
。因此,您可以单独渲染它,然后使用 javascript.
创建 JSON 对象
var csrfToken = $('[name="csrfmiddlewaretoken"]').val();
var data = {'csrfmiddlewaretoken': csrfToken);
然后将数据发送到您的 post。我更喜欢使用 Fetch API 到 post。
我收到 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'。出了什么问题,如何解决?
使用 AJAX 时,您需要随请求一起传递 CSRF 令牌。查看更多官方指南:https://docs.djangoproject.com/en/2.1/ref/csrf/#ajax
{% csrf_token %}
将呈现为 <input type="hidden" name="csrfmiddlewaretoken" value="xxxxxx">
。因此,您可以单独渲染它,然后使用 javascript.
var csrfToken = $('[name="csrfmiddlewaretoken"]').val();
var data = {'csrfmiddlewaretoken': csrfToken);
然后将数据发送到您的 post。我更喜欢使用 Fetch API 到 post。