我正在构建一个Django(1.9.6)应用程序,在Heroku上托管带有一个带有Let的加密SSL证书的gunicorn。当我尝试在管理员中保存模型时,我遇到了Forbidden 403错误,并显示消息" CSRF验证失败。请求中止。有关DEBUG = True的更多信息。"如果我将debug设置为True,则不再出现错误。
我的settings.py文件包含:
ALLOWED_HOSTS = ['localhost', '.example.com']
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
CSRF_COOKIE_SECURE = True
CSRF_TRUSTED_ORIGINS = ['localhost', '.example.com']
SECURE_HSTS_SECONDS = 60
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
我尝试过使用不同的设置,包括CSRF_COOKIE_DOMAIN,并且我已经清除了我的缓存和Cookie。
我最近将我的数据库从SQLite迁移到PostgreSQL,所以我认为它可能与pk计数器重置为1有关;我尝试在数据库中删除我的模型来解决这个问题,但我仍然无法保存模型。
我还注意到我的一个Django {%include template.html%}标签不起作用,不确定这是否相关。