jquery - 为什么我在 Django 中收到 403 POST 请求错误?

标签 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
  })
})

最佳答案

您没有正确设置{{ csrf_token }},您需要将其注入(inject)到POST数据中,或者作为X-CSRFToken header ,但不能作为整个 标题。例如,参见 Django documentation on Setting the token on the AJAX request .

在 POST 数据中

var data = {
    form: form,
    image_form: 123,
    <b>csrfmiddlewaretoken: '{{ csrf_token }}'</b>
}

在 POST 标题

或者我们可以将其包含在帖子标题中,例如:

$.ajax({
    headers: <b>{'X-CSRFToken':</b> '{{ csrf_token }}' <b>}</b>,
    type: 'POST',
    data: data,
    processData: false,
    contentType: false
});

关于jquery - 为什么我在 Django 中收到 403 POST 请求错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56588338/

相关文章:

javascript - jQuery JSON 解析问题

javascript - 使用 javascript、jquery 或 ajax 通过 php url 动态附加日期

javascript - "virtual"dom 操作?

ajax - 如何将失败响应从 django 发送到 ajax

javascript - 当我提交表单时,我收到 Uncaught RangeError : Maximum call stack size exceeded

javascript - 无法动态加载MathJax

javascript - 使用 javascript 重构 html

python - Django 在 PDF 导出中更改文件名

Django 拒绝保存表单上显示的日期

c# - 更新收件箱新邮件计数