Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为什么我在Django收到403 POST请求错误?_Jquery_Django_Ajax_Csrf - Fatal编程技术网

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

Jquery 为什么我在Django收到403 POST请求错误?,jquery,django,ajax,csrf,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({

为什么我收到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}
,您需要将其注入POST数据,或作为
X-CSRFToken
头,但不能作为整个
头。请参见示例

在POST数据中
var数据={
形式:形式,,
图像格式:123,
csrfmiddlewaretoken:“{{csrf_令牌}”
}
在邮件标题中 或者我们可以将其包含在帖子标题中,如:

$.ajax({
    headers: {'X-CSRFToken': '{{ csrf_token }}' },
    type: 'POST',
    data: data,
    processData: false,
    contentType: false
});
$.ajax({
标题:{'X-CSRFToken':{{{csrf_token}}},
键入:“POST”,
数据:数据,
processData:false,
contentType:false

});标题应该是键和值。试试:“X-CSRFToken:{{csrf_token}}”。403响应可能也有一个主体。检查是否有实际的错误消息。在设置中使用DEBUG=True;)告诉我如何获取request.POST中的数据?它在那里是空的(request.POST.viewkeys())…@crmk_Мцццццццццццццццц1094。因此,您需要获取这些值,并用这些值组成一个字典。@БМццццццццццццццццццццццццццццц,您需要获取输入元素中的值,并构造一个字典。不能将表单“传送”到服务器,只能将值传送到服务器。
$.ajax({
    headers: {'X-CSRFToken': '{{ csrf_token }}' },
    type: 'POST',
    data: data,
    processData: false,
    contentType: false
});