为什么我在Django上收到403 POST请求错误?

时间:2019-06-13 20:45:13

标签: jquery django ajax csrf

为什么我收到403 POST请求错误?

我不明白这里出了什么问题...

$('#id_submit').click(function(e) {
  e.preventDefault();
  var form = new FormData($('form')[0])
  form.append("image", $("input#id_image")[0].files[0])

  var data = {
    form: form,
    image_form: 123
  }

  $.ajax({
    headers: '{{ csrf_token }}',
    type: 'POST',
    data: data,
    processData: false,
    contentType: false
  })
})

1 个答案:

答案 0 :(得分:3)

您没有正确设置{{ csrf_token }},需要将其插入POST数据中,或作为X-CSRFToken标头插入,而不是作为 entire {{1} }。例如,参见Django documentation on Setting the token on the AJAX request

在POST 数据

headers

在POST 标头

或者我们可以在帖子标题中添加它,例如:

var data = {
    form: form,
    image_form: 123,
    csrfmiddlewaretoken: '{{ csrf_token }}'
}