我在django中提交ajax表单并使用
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
获取csrf_token。表格在镀铬方面运作良好。但是在firefox中,csrf_token的值为null,它给出403禁止错误。当我在控制台中检查cookie时,我没有在控制台中收到csrf_token。为什么django没有给火狐浏览器提供csrf_token?
答案 0 :(得分:4)
将以下装饰器添加到生成包含表单
的页面的视图中@ensure_csrf_cookie
来自Django Docs -
Page使用没有任何HTML表单的AJAX
页面通过AJAX发出POST请求,页面没有 带有csrf_token的HTML表单会导致所需的CSRF cookie 发送。
解决方案:在发送页面的视图上使用ensure_csrf_cookie()。