J'ai placé des cookies avec le code suggéré dans les documents:
from flask import make_response
@app.route('/')
def index():
resp = make_response(render_template(...))
resp.set_cookie('username', 'the username')
return resp
Mais comment les supprimer? Il n'y a pas de méthode remove_cookie. J'ai essayé:
if request.cookies.get('sessionID');
request.cookies.pop('sessionID', None)
mais il s'avère que l'objet request.cookies est immuable. Que fais-je?
Il n'y a pas d'en-tête HTTP pour supprimer un cookie. Traditionnellement, vous définissez simplement le cookie sur une valeur fictive avec une date d'expiration dans le passé, il expire donc immédiatement.
resp.set_cookie('sessionID', '', expires=0)
Cela définira le cookie d'ID de session sur une chaîne vide qui expire à unixtime 0
, ce qui est presque certainement du passé.
Vous devez définir le cookie avec une expiration antérieure.
resp = make_response(render_template(...))
resp.set_cookie('username', expires=0)
return resp
Au fait, j'espère que vous ne vous attendez pas à ce que le cookie de nom d'utilisateur soit sûr. Parce que non. L'utilisateur peut y mettre tout ce qu'il veut. La solution consiste généralement à utiliser la session Flask qui utilise un cookie signé qui ne peut pas être modifié par l'utilisateur.
Nous pouvons nous rendre de delete_cookie () disponible à partir de flask.Response.
resp.delete_cookie('username')
Cela supprimera le cookie lors de la réponse. Voici documentation delete_cookie .
Vous pouvez également vouloir ajouter chemin d'accès (valeur par défaut à '/') et domaine (défini par défaut sur Aucun).
resp.delete_cookie('username', path='/', domain='yourdomain.com')
Voici la capture d'écran de l'interpréteur qui montre l'objet delete_cookie dans flask.Response.