【问题标题】:Django admin raises CSRF verification failedDjango 管理员提出 CSRF 验证失败
【发布时间】:2012-09-24 14:10:22
【问题描述】:

我已经启动了新的 django 项目并启用了管理应用程序。 我可以登录到管理站点,但是当我尝试添加/更改站点或用户时,我得到了

CSRF verification failed. Request aborted.
Reason given for failure:
CSRF token missing or incorrect.

这就是我在 settings.py 中的内容:

TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)

当我查看管理页面源代码时,我看到了

<input type='hidden' name='csrfmiddlewaretoken' value='T9Mfk1LRXi5jPE2dh5jcvdKwzYM6Iy5I' />

那里

我有 Django 版本 1.4.1

【问题讨论】:

  • 你试过清除你的cookie吗?如果其他一切设置正确,这可能会为您解决问题。

标签: python django csrf django-csrf


【解决方案1】:

在本地,我有一个项目,CRSF 在浏览 http://localhost:8040/my-admin/ 时工作正常,但在 http://127.0.0.1:8040/my-admin/ 时失败。

我不知道为什么,但这可能有助于节省一些时间。

注意:我没有设置CSRF_COOKIE_DOMAIN

【讨论】:

    【解决方案2】:

    您是否覆盖了 CSRF_COOKIE_DOMAIN 设置?如果表单中存在 CSRF 令牌,并且您没有修改管理应用程序的源,那么最有可能的情况是 cookie 设置不正确。

    检查登录页面的响应标头以确保 cookie 设置正确,并检查您的登录尝试的请求标头以确保它也被发送(并且与表单中的值匹配)。

    【讨论】:

    • 哎呀...看起来我只需要清除缓存并重新启动我的机器。感谢您的帮助
    • 这里有类似的问题。我只是刷新登录页面,而不是从 /admin/ 重新开始。
    猜你喜欢
    • 2017-10-21
    • 2019-07-22
    • 2011-01-11
    • 1970-01-01
    • 2012-09-08
    • 2015-06-02
    • 1970-01-01
    相关资源
    最近更新 更多