Python, Flask WTF: Token desaparecido en sesión -- python campo con session campo con flask campo con cookies campo con flask-wtforms camp Relacionados El problema

Python, Flask WTF : token missing in session


1
vote

problema

Español

Tengo:

  • Backend Python Flask API
  • reaccionar front-end (con axios para solicitudes)

Este es mi código de backend para 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   

Código de Front-End:

  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;   

Como puede ver, cuando publique la solicitud a mi API, el token CSRF está aquí:

x-csrf-token: Ijnhm2yxy2zhndyyzmzzdflzjhlmwexymzmwnmnti3nzfhndhkmjki.x9ce-q.e_5se2ulacaqdaiyuomz4kvntbs

pero estoy recibiendo esta respuesta:

400 Solicitud de mala solicitud El token de la sesión de CSRF falta.

El problema parece estar en la sesión de Flask: cuando estoy depurando session OBJETO DE FLASK, Token está presente:

session contiene token en matraz después_Request Handler

pero está vacío en el código de protección CSRF de FLASK WTF

Session vacía en el código CSRFProtect de FLASK-WTF

Estoy usando FLASK-WTF == 0.14.3

Cualquier ayuda para resolver este problema de sesión sería apreciado

Original en ingles

I have :

  • Backend python Flask API
  • React front-end (with axios for requests)

This is my backend code for 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 

Front-end code :

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; 

as you can see, when I POST request to my API, CSRF Token is here :

X-CSRF-Token: IjNhM2YxY2ZhNDcyYzMzZDFlZjhlMWExYmMzMWNmNTI3NzFhNDhkMjki.X9Ce-Q.E_5se2uLaCaQDAiYUOMZ4kVNtBs

But I'm getting this response :

400 Bad Request The CSRF session token is missing.

The issue seems to be in flask session : when I'm debugging session object from flask, token is present :

Session contains token in flask after_request handler

But is is empty in Flask WTF CSRFProtect code

Session empty in CSRFProtect code from Flask-WTF

I'm using Flask-WTF==0.14.3

Any help to solve this session issue would be appreciated

              

Lista de respuestas


Relacionados problema

0  ¿Por qué mi validate_on_submit () no funciona?  ( Why my validate on submit doesnt work ) 
Después de completar el formulario y hacer clic en "Enviar", el archivo no se guarda. Funciona que la forma es "no enviar". Pasó 3 horas ya y no puede encontr...

2  La forma nunca es válida con WTForms  ( Form is never valid with wtforms ) 
Tengo un formulario FLASK-WTF para iniciar sesión. Aparentemente, el formulario nunca es válido, no importa lo que ingrese "El éxito" nunca se imprime. ¿Por q...

0  Use FlaskForm y WTForms para crear un formulario con número variable de campos  ( Use flaskform and wtforms to create form with variable number of fields ) 
Uso de FlaskForm y WTForms, ¿cómo podría diseñar un formulario para contener campos de base como nombre y edad, pero también tener un número variable de campo...

1  "Mala solicitud, el navegador (o el proxy) envió una solicitud de que este servidor no podía entender". Inicio de sesión de matraz  ( Bad request the browser or proxy sent a request that this server could not un ) 
Estoy obteniendo el error Ubicante WTFORM 400 Error, y he probado otras soluciones. Deja que la mejora en mi forma, pero no detuvo el error. Tengo Plantilla...

1  Tamaño predeterminado del formulario para WTForms  ( Default form size for wtforms ) 
Quiero tener la forma larga que es al menos tamaño = 50, y en el HTML tengo: {{ form.name(size=50) }} Sin embargo, tengo como 10 formas para cada págin...

1  El frasco devuelve el método no permitido "al enviar el formulario  ( Flask returns method not allowed when submitting form ) 
Estoy detenidamente siguiendo el Tutorial muy breve de Flask-WTF aquí . Tengo un problema en el que después de enviar mi nombre en el formulario My Enviar ...

0  Frasco, WTFORMS_ALCHEMY, RELACIÓN y MOQUANDO CAMPO UNIDO NO PODRIDO  ( Flask wtforms alchemy relationship and annoying unbound field not callable er ) 
Estoy usando matraz, python, wtforms y wtforms_alchemy ¿Por qué estoy obteniendo un error de "sinoderfield no llamado" Cuando la línea Clonable1111 está...

4  ¿Cómo personalizar el mapeo de campo modelo wtform model_form?  ( How to customize wtform model form field mapping ) 
Estoy usando matraz con WTForms (y Flask-WTF) para crear formularios para Model Crud. Me he encontrado con una pregunta que no he podido averiguar hoy, princi...

1  Validate WTForm después de selectfield opciones actualizadas dinámicamente con jQuery  ( Validate wtform after selectfield choices updated dynamically with jquery ) 
Estoy creando una aplicación de matraz y creé un formulario usando WTForms. El formulario tiene dos campos selectos (desplegables) y un botón de envío. Me gus...

0  flask_wtf selectfield (error: opciones no válidas)  ( Flask wtf selectfield error choices not valid ) 
Estoy usando Python 2.7 y He buscado una solución aquí , Aquí y aquí Pero ninguno de ellos resolvió mi problema. Estoy trabajando en un proyecto simple (...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos