Python, Flask WTF: токен отсутствует в сеансе

#python #session #flask #cookies #flask-wtforms

#python #сессия #flask #файлы cookie #flask-wtforms

Вопрос:

У меня есть :

  • Серверный python Flask API
  • Интерфейс React (с axios для запросов)

Это мой серверный код для CSRF :

 from flask import Flask
from flask_cors import CORS
from flask_wtf.csrf import CSRFProtect, generate_csrf

app = Flask(__name__)
CSRFProtect(app)
CORS(app)

@app.after_request
def inject_csrf_token(response):
    csrf_token = generate_csrf()
    response.set_cookie('csrf_token', csrf_token)
    return response
 

Интерфейсный код :

 import axios from 'axios';
import Cookies from 'js-cookie'

const API_URL = `https://${window.location.hostname}:7000/v2/`;

const api = axios.create({
    baseURL: API_URL,
    headers: {
        'Content-Type': 'application/json',
        'X-CSRF-Token': Cookies.get('csrf_token')
    }
});

export default api;
 

как вы можете видеть, когда я ОТПРАВЛЯЮ запрос в свой API, токен CSRF находится здесь :

X-CSRF-Токен: IjNhM2YxY2ZhNDcyYzMzZDFlZjhlMWExYmMzMWNmNTI3NzFhNDhkMjki.X9Ce-Q.E_5se2uLaCaQDAiYUOMZ4kVNtBs

Но я получаю этот ответ :

400 Неверный запрос Токен сеанса CSRF отсутствует.

Проблема, похоже, в сеансе flask: когда я отлаживаю session объект из flask, токен присутствует :

Сеанс содержит токен в обработчике flask after_request

Но он пуст в коде Flask WTF CSRFProtect

Сессия пуста в CSRFProtect код из Flask-WTF

Я использую Flask-WTF==0.14.3

Буду признателен за любую помощь в решении этой проблемы сеанса