#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 WTF CSRFProtect
Я использую Flask-WTF==0.14.3
Буду признателен за любую помощь в решении этой проблемы сеанса