我遇到了Django CSRF cookie的问题。 我告诉你: 首先,我有一个JS代码,自动将所有CSRF cookie头文件放入Ajax。直到一段时间它工作正常,但我注意到以下几点:
在隐身模式下,无论是Firefox还是Chrome,CSRF Cookie都无效,请发送空值。
在普通版Chrome中,不发送任何cookie,因此没有CSRF。
其次,我注意到另一个缺点:
在CSRF cookie正确发送的唯一浏览器中,这是正常模式下的firefox。当我删除cookie并再次发出请求时,这会向我发送一个空值。
有没有人有任何想法解决这个问题?
然后我展示我的JS代码,将cookie设置为CSRF令牌:
<div ng-controller="MyCtrl">
<h1 class="slide" ng-hide="!isCurrentIndex(0)">Welcome</h1>
<h1 class="slide" ng-hide="!isCurrentIndex(1)">to</h1>
<h1 class="slide" ng-hide="!isCurrentIndex(2)">ng-hide</h1>
</div>
由于额外的信息告诉他们并尝试在其他问题中提出的解决方案,但尚未解决。
no csrf token after ajax page load
Django - AJAX not working due to csrf token not working on windows
Django csrf in ajax POST (csrf cookie not set until {{csrf}} used)
答案 0 :(得分:3)
我真是个大傻瓜。 解决方案很简单,使用我在我的问题上提出的JS代码,只需添加模板标记:
{% csrf_token %}
这似乎很明显,但应该使用cookie作为CSRF进行编码。但是,当这不存在时,因为它们必须采取另一方面,在这种情况下是CSRF标签。