Firefox Django CSRF令牌错误

时间:2018-07-20 21:32:10

标签: django firefox csrf

我最近对表单进行了一些更改,以进行比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上的过程!

1 个答案:

答案 0 :(得分:0)

csrf_token应该以XMLHttpRequest的形式出现,因为您使用的是JS发送数据:

var xhttp = new XMLHttpRequest();
xhttp.open("POST", url, true);
xhttp.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
xhttp.send();