【发布时间】:2022-02-10 01:14:48
【问题描述】:
我希望将我的应用后端从 Django 3.1.14(工作正常,但不再受支持)更新到新版本(我尝试了 3.2 和 4.0),但更新后我开始收到 CSRF cookie 错误。
禁止(未设置 CSRF cookie。):/api-token-auth/
有没有人知道 Django 在 CSRF 方面发生了什么变化,以及如何避免这些错误?
我的印象是在使用带有令牌身份验证的 Django Rest Framework 时没有强制执行 CSRF。无论如何,我尝试删除 'django.middleware.csrf.CsrfViewMiddleware' 中间件,将 @csrf_exempt 添加到所有视图中,删除所有现有令牌并注销 Django 管理员,但无济于事。我在settings.py中的DRF配置如下:
INSTALLED_APPS = [
'rest_framework',
'rest_framework.authtoken',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
}
编辑:下面是我自己的答案
【问题讨论】:
-
你更新了你的 django-cors-headers 包了吗?
-
是的
django-cors-headers==3.11.0,这是撰写本文时最新的。
标签: django django-rest-framework csrf