私はドキュメントで提案されたコードでクッキーを設定しました:
from flask import make_response
@app.route('/')
def index():
resp = make_response(render_template(...))
resp.set_cookie('username', 'the username')
return resp
しかし、どうすれば削除できますか? remove_cookieメソッドはありません。私は試した:
if request.cookies.get('sessionID');
request.cookies.pop('sessionID', None)
しかし、request.cookiesオブジェクトは不変であることがわかりました。私は何をしますか?
Cookieを削除するためのHTTPヘッダーはありません。従来は、Cookieに有効期限が過去のダミー値を設定していたため、すぐに期限切れになりました。
resp.set_cookie('sessionID', '', expires=0)
これにより、セッションID Cookieがunixtimeで期限切れになる空の文字列に設定されます0
、これはほぼ間違いなく過去のものです。
過去の有効期限でCookieを設定する必要があります。
resp = make_response(render_template(...))
resp.set_cookie('username', expires=0)
return resp
ちなみに、ユーザー名のCookieが安全であることを実際に期待しないでください。そうではないので。ユーザーは自分が欲しいものを何でも入れられます。通常、解決策は、ユーザーが変更できない署名付きCookieを使用するFlaskセッションを使用することです。
フラスコ。レスポンスからdelete_cookie()を利用できるようにすることができます。
resp.delete_cookie('username')
これにより、応答時にCookieが削除されます。こちらが delete_cookieドキュメント です。
また、追加path(デフォルトは「/」に設定)およびdomain(デフォルトは[なし]に設定されています)。
resp.delete_cookie('username', path='/', domain='yourdomain.com')
以下は、flask.Response内のdelete_cookieオブジェクトを示すインタープリターのスクリーンショットです。