2017-01-10 10 views
1

Я пытаюсь добавить защиту токена CSRF, используя расширение CSRFProtect от Flask-WTF. Приложение не использует WTForms, кроме этой защиты CSRF.Flask-WTF CSRFProtect дает ошибку «400 CSRF Token отсутствует»

Я следил за the docs, но я получаю «400 Bad Request. Значок CSRF отсутствует».

from flask_wtf.csrf import CSRFProtect 
csrf = CSRFProtect(app) 

Я разместил следующее в шаблонах (с формой или без формы), но я получаю ту же ошибку.

<form method="post"> 
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> 
</form> 
+0

Как вы отправляете в свое приложение? Если вы используете JavaScript, он ничего не знает о поле формы, если вы не отправляете эту конкретную форму. Документы, надеюсь, будут понятны об этом. Пожалуйста, [править], чтобы включить [mcve]. – davidism

+0

Нет, это традиционная страница формы и она не использует javascript для публикации данных. Я добавил '' для каждой формы –

+0

Пожалуйста, [править], чтобы включить [mcve]. – davidism

ответ

0

Как описано в this answer, проверьте фактический поток проверки CSFR:

Вы можете отлаживать проверку в flask_wtf/csrf.py файл, в функции validate_csrf().

Для меня проблема была вызвана недавним обновлением Настой и Колба-WTF. Я решил это, удалив все файлы .pyc в проекте. Тем не менее, я не знаю фактической основной причины в моем случае.

find . -name '*.pyc' -delete 

 

Позже изменения:

  • обновление последних версий Колба, Колба-ВТФ;
  • в вашей среде разработки, если вы используете HTTP вместо HTTPS, убедитесь, что SESSION_COOKIE_SECURE не установлен в True. См. this.