Csrf cookie未使用ajax设置。几个浏览器出错

时间:2016-02-10 20:34:36

标签: ajax django python-3.x cookies django-csrf

希望你没事。

我遇到了Django CSRF cookie的问题。 我告诉你: 首先,我有一个JS代码,自动将所有CSRF cookie头文件放入Ajax。直到一段时间它工作正常,但我注意到以下几点:

在隐身模式下,无论是Firefox还是Chrome,CSRF Coo​​kie都无效,请发送空值。

在普通版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>

由于额外的信息告诉他们并尝试在其他问题中提出的解决方案,但尚未解决。

Django CSRF Cookie Not Set

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)

1 个答案:

答案 0 :(得分:3)

我真是个大傻瓜。 解决方案很简单,使用我在我的问题上提出的JS代码,只需添加模板标记:

{% csrf_token %}

这似乎很明显,但应该使用cookie作为CSRF进行编码。但是,当这不存在时,因为它们必须采取另一方面,在这种情况下是CSRF标签。