Flask: Как удалить файлы cookie? - программирование
Подтвердить что ты не робот

Flask: Как удалить файлы cookie?

Я устанавливаю файлы cookie с кодом, предложенным в документах:

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 является неизменным. Что мне делать?

4b9b3361

Ответ 1

Нет HTTP-заголовка для удаления файла cookie. Традиционно вы просто устанавливаете cookie в фиктивное значение с датой истечения срока в прошлом, поэтому он немедленно истекает.

resp.set_cookie('sessionID', '', expires=0)

Это установит cookie id сеанса в пустую строку, которая истекает в unixtime 0, что почти наверняка было в прошлом.

Ответ 2

Вам нужно установить cookie с истечением срока, в прошлом.

resp = make_response(render_template(...))
resp.set_cookie('username', expires=0)
return resp

Кстати, надеюсь, вы действительно не ожидаете, что cookie-имя пользователя будет безопасным. Потому что это не так. Пользователь может поместить все, что захочет. Обычно это решение использует сеанс Flask, который использует подписанный файл cookie, который не может быть изменен пользователем.