Tengo problemas para que el cliente de prueba de Flask pase las cookies. Este código solía funcionar y supongo que algo en mi entorno cambió, lo que rompe esto. Recientemente creé un nuevo virtualenv de Python 3.7 e instalé Flask 1.0.2.
from flask import Flask, jsonify, request app = Flask(__name__) @app.route('/cookie_echo') def cookie_echo(): return jsonify(request.cookies) with app.test_client() as client: response = client.get("/cookie_echo", headers={"Cookie": "abc=123; def=456"}) print(response.get_data(as_text=True)) Ejecutar el ejemplo imprime {} , pero espero que imprima {"abc":"123","def":"456"} .
Si ejecuto mi aplicación a través de la flask run , el envío de encabezados con curl funciona:
$ curl -H "Cookie: abc=123; def=456" http://localhost:5000/cookie_echo {"abc":"123","def":"456"}El Client administra las cookies, no debe pasarlas manualmente en headers={} . Debido a los cambios en Werkzeug 0.15, pasar un encabezado de Cookie de forma manual, lo que no estaba previsto, ya no funciona. Use client.set_cookie para configurar una cookie, o configure la cookie en una respuesta y se enviará con la siguiente solicitud.
c = app.test_client() c.set_cookie('localhost', 'abc', '123') c.set_cookie('localhost', 'def', '456') c.get('/cookie_echo')