Jun 04

Me topé el día de hoy con el error mencionado después de instalar Django v1.2 y ejecutar una aplicación programada sobre el Framework v. 1.1:

Forbidden (403)

CSRF verification failed. Request aborted.

Help

Reason given for failure:

    CSRF token missing or incorrect.

In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django’s CSRF mechanism has not been used correctly. For POST forms, you need to ensure:

  • The view function uses RequestContext for the template, instead of Context.
  • In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
  • If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.

Resulta que esta funcionalidad de protección fué agregada en la versión 1.2 de Django para las páginas de administración (admin), por lo que sugieren por aquí utilizar estos nuevos métodos para proteger nuestro sitio.

Sólo hay que agregar al archivo settings.py en la parte de MIDDLEWARE CLASSES lo siguiente:


MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',

)

Después de lo anterior, ejecutar nuestra app (modo de desarrollo)

python manage.py runserver

Para seguir en la onda pythonesca :)

One Response to “Django CSRF verification failed. Request aborted.”

  1. mic Says:

    ufff que chafa:

    CSRF token missing or incorrect.

    apenas en la version 1.2 cuando Symfony lo tiene por default desde sus inicios.

Leave a Reply

preload preload preload