我最近对表单进行了一些更改,以进行比celery提供的错误更高级的检查(错误基于来自多个字段的输入)。一切正常,直到同事发现该表格不再适用于Firefox(开发和测试已在Chrome上完成)。
抛出的特定错误是:
django.request [WARNING] > Forbidden (CSRF token missing or incorrect.): /[url]
我怀疑此问题的根源在于更改:
<form action="{% url '[submit url]' %}">
至
<form onsubmit="sendData()">
,其中sendData
构造一个XMLHttpRequest
并将其发送。我尝试将csrftoken
标头添加到来自{{csrf_token}}
的请求中,但由于相同的原因而失败-甚至破坏了Chrome上的过程!
答案 0 :(得分:0)
csrf_token应该以XMLHttpRequest的形式出现,因为您使用的是JS发送数据:
var xhttp = new XMLHttpRequest();
xhttp.open("POST", url, true);
xhttp.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
xhttp.send();