簡體   English   中英

使用 Flask 測試客戶端請求傳遞 cookie 標頭

[英]Pass cookie header with Flask test client request

我無法讓 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"}

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM