Tengo un problema con el token csrf en un sitio impulsado por Django, que estoy cerca de informar como un error.
El problema es básicamente que el token CSRF falla cuando DEBUG es False . Cuando DEBUG es False , si estoy usando sesiones para el token csrf (Django 1.11):
CSRF_USE_SESSIONS = True CSRF_COOKIE_AGE = None... todos los formularios/solicitudes de publicación en la interfaz fallan en la autenticación, pero puedo iniciar sesión correctamente en el panel de administración de Django, por ejemplo, la autenticación del token csrf es exitosa.
Por otro lado, si estoy usando cookies para csrf, la autenticación en la interfaz para formularios/solicitudes de publicación se realiza sin ningún problema, pero luego falla para el inicio de sesión del administrador: la CSRF verification failed. Request aborted.
Parte de mi archivo settings.py se ve así:
SECRET_KEY = os.getenv('DJANGO_SECRET_KEY') DEBUG = 'DEBUG' in os.environ # CSRF # These are commented/uncommented depending on what method I'm testing # CSRF_USE_SESSIONS = True # CSRF_COOKIE_AGE = None # I added the cookie domain setting after I started seeing the problem # and hoped it would have resolved it; it didn't help. CSRF_COOKIE_DOMAIN = '.{0}'.format(os.getenv('DOMAIN_NAME', 'mysite.com')) ALLOWED_HOSTS = [ '.mysite.com', '.mysite.info', ] if DEBUG: ALLOWED_HOSTS.extend(['.mysite.dev']) INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'mainsite', 'constance', 'jstemplate', 'compressor', ] MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.middleware.gzip.GZipMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', 'mainsite.middleware.Guid', 'mainsite.middleware.SiteLang', ] Si configuro DEBUG en True , no tengo ningún problema con la autenticación del token CSRF, tanto en la interfaz como al iniciar sesión en el panel de administración de Django.
También estoy usando Redis como caché. ¿Me estoy perdiendo algo crucial que está causando este error CSRF? Debo señalar que hubo un punto en el que no recibí este error, pero por mi vida no puedo precisar qué cambio habría creado este comportamiento con el token CSRF.
También tengo el mismo problema.
resuelvo esto por
1. pip install django-sslserver .
2. Coloque sslserver en INSTALLED_APPS .
3. python manage.py runsslserver