Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

110
Views
Envío de cookies entre Flask y javascript y uso de Flask-session

Soy un novato en desarrollo web, pero haré todo lo posible para aclarar el problema, explicar mi enfoque y lo que he intentado. También incluyo importaciones en caso de que estén causando el problema, pero estoy bastante seguro de que lo he aislado a lo que describo.

Estoy tratando de usar Flask-session para mantener la información privada, pero algunos valores se "pierden". Este código se ha recortado significativamente para simplificar. El usuario aterriza en /send y renderizamos la plantilla de carga. loading.js hace fetch() en /deploy mientras ejecuta una animación, luego() vamos a /results cuando la función de implementación finaliza.

cargando.js

 function navigate() { window.location.href = 'results'; // redirect to results page when done! } // deploy the contract while the loading screen goes then navigate to results page const data = fetch('deploy').then(navigate); loopThroughMessages(messages);

principal.py

 from flask_session import Session app = Flask(__name__, static_folder='static', template_folder='templates') # for the session, ie passing values app.config["SESSION_PERMANENT"] = False app.config["SESSION_TYPE"] = "filesystem" app.config.from_object(__name__) Session(app) @app.route('/send') def main(): # take url parameters and do stuff with them return render_template('loading.html') @app.route("/deploy") def deploy_contract(): session['contract_address'] = some_fnc() # fetch() requires that this function return a json return {} @app.route("/results") def serve_results_page(): # pull saved values from the session data = {'contract_key' : session['contract_address'] } # calling session here causes the error, the contract_address key doesn't exist return render_template('results.html', data=data)

Entonces contract_address se guarda en la sesión, pero cuando llegamos a /results , el servidor no tiene forma de asociar esa sesión con el cliente.

Queremos mantener privada nuestra contract_address , por lo que enviarla a loading.js no es una opción. Supongo que, dado que http no tiene estado, necesito pasar una cookie hacia y desde mis archivos js y python, pero estoy un poco perdido sobre cómo implementarlo. ¿Son innecesarias las cookies (porque el servidor en realidad no necesita recibir ningún dato de mis archivos js)? ¿Debería usar redireccionamientos o algo además de fetch ()?

Las correcciones de trucos, los diferentes enfoques y los recursos son bienvenidos. Siento que estoy cerca, como si hubiera una manera simple de usar cookies que estoy pasando por alto.

Continuaré investigando y detallando los enfoques que estoy considerando Edit1: Mirando el método should_set_cookie de Flask

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Intente fetch con credenciales: 'incluir' para que los navegadores envíen una solicitud con credenciales incluidas en las llamadas del lado del servidor:

 fetch('deploy', { method: 'GET', credentials: 'include' }).then(navigate);

Con esto, accederá a session['contract_address'] en la ruta de results .

La flask-session establece una cookie con una sesión clave en su navegador, busque con credentials:'include' incluye este valor de cookie en la llamada de red.

about 4 years ago · Juan Pablo Isaza Report

0

La sesión en el matraz se implementa como una sesión de cliente, guardando todo el contenido de la sesión como cookies de cliente. La extensión flask-session proporciona otro almacenamiento de servidor para la sesión. Por ejemplo app.config["SESSION_TYPE"] = "filesystem" guarda el contenido de la sesión en un archivo en el servidor.

Pero ambos enfoques aún dependen de Cookie . El almacenamiento de la sesión del lado del servidor necesita obtener un session_id de la Cookie del cliente.

Debe habilitar el envío de cookies en Fetch API.

buscar, enviar cookies

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!