Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

120
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda