Django 2.1-CSRFToken更改

时间:2018-10-24 09:33:06

标签: django

将DJANGO应用程序从1.11迁移到2.1时遇到问题

在开发过程中,我在端口3000上有一个node.js服务器(前端),在8000上有DJANGO开发服务器。前端使Ajax调用受CSRFtoken保护。

我有一个以@ensure_csrf_cookie装饰器开头的视图。

我通常第一次必须去chrome:// net-internals /#events 启动前端,获取服务器返回的csrftoken值,然后创建相对cookie。不幸的是,该配置不会自动创建Cookie。

问题是。 Django 1.11甚至在完全刷新后仍会生成相同的CSRFToken,因此,第一次后,cookie将等于生成的令牌。 Django 2.1每次都会更改csrftoken,因此我无法创建cookie,因为它始终等于先前的值。

即使默认期限为1年,为什么Django 2.1还是更改了csrftoken?

1 个答案:

答案 0 :(得分:0)

经过大量搜索并得到Alasdair的回答之后,找到的唯一解决方案是强制中间件生成相同的令牌。

这种方法仅在我的开发特定情况下有效。

转到:

()

编辑文件

lib/python3.5/site-packages/django/middleware

编辑方法的定义:

csrf.py

在执行其他任何说明之前,请先写上带有令牌的退货单:

def _get_token(self, request):