среда, 7 июля 2010 г.

CSRF verification failed. Request aborted. Ошибки после обновления Django.

Сегодня обнаружил еще одну проблему, появившуюся после обновления Django до 1.2 - при попытке загрузки файла, джанго пишет ошибку "CSRF verification failed. Request aborted". Как выяснилось, CSRF - один из механизмов защиты от особых атак (подробнее тут ). Теперь нужно использовать тег {% csrf_token %} внутри каждой POST формы и добавить 'django.middleware.csrf.CsrfViewMiddleware', в MIDDLEWARE_CLASSES в файле settings.py. Например, так это выглядит у меня:

settings.py:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
)

4 комментария:

  1. У Вас 2 раза подключается один и тот же мидлвейр:
    'django.middleware.csrf.CsrfViewMiddleware'

    ОтветитьУдалить
  2. Спасибо, не заметил. Исправил.

    ОтветитьУдалить
  3. У меня не помогло, вообще ошибку выдает "A server error occurred. Please contact the administrator."

    ОтветитьУдалить
    Ответы
    1. Смотрите подробнее в логи, эта ошибка толком ни о чем не говорит :)

      Удалить