Python Firefox未接收django csrf_令牌

Python Firefox未接收django csrf_令牌,python,django,firefox,django-csrf,Python,Django,Firefox,Django Csrf,我正在django中提交一个ajax表单,并使用 xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); 获取csrf_令牌。该表单在chrome中运行良好。但在firefox中,csrf_令牌的值为null,并且其给出403禁止的错误。当我在控制台中检查cookies时,我没有在控制台中接收到csrf_令牌。为什么django不给firefox浏览器提供csrf_令牌?在生成保存表单的页面的视图中添加以下装饰程序 @确保_cs

我正在django中提交一个ajax表单,并使用

xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));

获取csrf_令牌。该表单在chrome中运行良好。但在firefox中,csrf_令牌的值为null,并且其给出403禁止的错误。当我在控制台中检查cookies时,我没有在控制台中接收到csrf_令牌。为什么django不给firefox浏览器提供csrf_令牌?

在生成保存表单的页面的视图中添加以下装饰程序

@确保_csrf_cookie

来自Django文档-

页面使用AJAX而不使用任何HTML表单

页面通过AJAX发出POST请求,并且该页面没有 带有csrf_标记的HTML表单,该标记将导致所需的csrf cookie 待发送

解决方案:在发送页面的视图上使用sure_csrf_cookie()


您是否检查了
getCookie('csrftoken')
是否在Firefox中返回任何值?请显示呈现表单的代码。表单是ajax表单,我正在使用从cookie获得的csrftoken将序列化数据发布到django,该csrftoken使用
xhr.setRequestHeader(“X-csrftoken”,getCookie('csrftoken'))
如果你在浏览器检查器中查看网络流量,你会看到那里的csrf令牌吗?它的行为很奇怪,当我登录应用程序时,我得到了csrf_令牌,然后即使在登录后它也会留在那里。但是如果我清除了浏览器的所有cookie,那么在登录之前我不会得到任何csrf_令牌。为什么我没有登录就不能获得csrf_令牌?