Большинство ответов SO просят очистить файлы cookie и подтвердить класс промежуточного программного обеспечения. Я уже пробовал это.Различное значение токена csrf в заголовке ответа и куки-файлы браузера. Ошибка csrf в django 1.9
Python - 3,4
Джанго - 1,10
Использование VirtualEnv.
Я получаю ошибку Forbidden (403) CSRF verification failed. Request aborted.
на экране входа администратора Django. Я разместил свой сайт на pythonanywhere.com с помощью django версии 1.9.
- Я очистил cookies браузера. Все они.
- Я перезагрузил экран входа. Получить запрос.
- В браузере куки, которые были до сих пор пусто, одно значение было установлено на мой сайт, где значение CSRF является =
XPp5hAhylAkt27U4SzGPNU7w8SFBJ3RP
- В заголовке ответа, установите печенье было отправить с печеньем значение =
UT24544MghHLZi0IrGHQlCcpk1v0SbCy
. Такое же значение было доступно в исходном коде формы. - Теперь я ввел имя пользователя и пароль и нажмите кнопку входа.
- Поступила ошибка 403 Ошибка проверки CSRF. Запрос прерван.
- Я перепроверял все значения токена csrf.
- В заголовке запроса значений CSRF печеньем =
XPp5hAhylAkt27U4SzGPNU7w8SFBJ3RP
В значениях CSRF форма данных =
UT24544MghHLZi0IrGHQlCcpk1v0SbCy
У меня уже есть 'django.middleware.csrf.CsrfViewMiddleware', в классах промежуточного программного обеспечения. Я очистил кеш браузера и файлы cookie. Даже перезапустили систему.
Я использовал точно такой же код на другом сайте, где он работает отлично.
Почему существуют разные значения знака csrf? Каково решение этой проблемы?
update 1: Если я устанавливаю debug = False в настройках, он отлично работает. Но я не могу сохранить его, поскольку код жив.
update 2: После дальнейших исследований выяснилось, что некорректное значение cookie csrftoken браузера не установлено для правильного значения, которое передается в заголовке ответа. Если я удалю и cookie из браузера, а затем настрою его на правильное значение с консоли, будут выполняться почтовые запросы.
update 3: Теперь такая же проблема происходит с каждым запросом на отправку или отправкой формы, которую я делаю в своем веб-приложении. Значение токена CSRF, отправленное в заголовке ответа и исходном коде, не совпадает с значением, установленным в cookie браузера.
обновление 4: настройка CSRF_COOKIE_NAME = "csrf_token" также не помогла.
Вы фактически помещаете токен CSRF в свою форму? – Glenn
Привет Глен, это админ-модуль, поэтому любая форма, созданная внутри модуля администратора, должна иметь токен csrf. – User42
Вы установили CSRF_COOKIE_SECURE в True, возможно? – zxzak