Django管理员提出CSRF验证失败

时间:2012-10-03 15:43:45

标签: python django csrf django-csrf

我已经启动了新的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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

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

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

注意:我还没有设置CSRF_COOKIE_DOMAIN