我在让 Flask 测试客户端传递 cookie 时遇到问题。这段代码曾经有效,我认为我的环境中的某些内容发生了变化,这打破了这一点。我最近创建了一个新的 Python 3.7 virtualenv 并安装了 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))
运行示例打印{}
,但我希望它能打印出来{"abc":"123","def":"456"}
.
如果我通过运行我的应用程序flask run
,使用curl发送标头有效:
$ curl -H "Cookie: abc=123; def=456" http://localhost:5000/cookie_echo
{"abc":"123","def":"456"}
The Client
管理 cookie,您不应该手动传递它们headers={}
。由于 Werkzeug 0.15 的变化,通过了Cookie
手动标头,这不是有意的,不再有效。使用client.set_cookie
设置 cookie,或者在响应中设置 cookie,它将与下一个请求一起发送。
c = app.test_client()
c.set_cookie('localhost', 'abc', '123')
c.set_cookie('localhost', 'def', '456')
c.get('/cookie_echo')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)