Куки

Последнее обновление: 06.09.2022

Установка куки

Для установки куки на сервере у объекта Response и его классов-наследников применяется метод set_cookie(). Этот метод принимает ряд параметров:

  • key: ключ или имя куки. Обязательный параметр

  • value: значение куки, значение по умолчанию - пустая строка

  • max_age: максимальное время жизни куки в секундах. Это может быть либо число, либо значение None (ограничивает время жизни куки текущей сессией браузера, является значением по умолчанию).

  • expires: когда истекает действие куки. Это может быть либо число, либо значение None (ограничивает время жизни куки текущей сессией браузера, является значением по умолчанию).

  • path: путь, для которого устанавливаются куки. Значение по умолчанию - корень веб-приложения "/"

  • domain: домен, к которому применяются куки. значение по умолчанию None

  • secure: устанавливает используемый протокол. Так, если имеет значение True, то куки будут посылаться на сервер только в запросе по протоколу https. Значение по умолчанию False

  • httponly: устанавлиет доступность для скриптов javascript на клиенте. Так, значение True предотвращает доступ к куки из кода javascript на клиенте. Значение по умолчанию False

  • samesite: устанавливает разрешения на отправку куки в кроссдоменных запросах. Так, значение lax (значение по умолчанию) указывают браузеру не посылать куки в кроссдоменных запросах.

Установим куку, которую назовем "last_visit":

from fastapi import FastAPI, Response
from datetime import datetime

app = FastAPI()

@app.get("/")
def root(response: Response):
    now = datetime.now()    # получаем текущую дату и время
    response.set_cookie(key="last_visit", value=now)
    return  {"message": "куки установлены"}

В данном случае кука "last_visit" представляет дату последнего визита и хранит текущую дату. Затем в браузере через инструменты разработчика мы можем увидеть параметры этой куки.

Установка куки в FastAPI и Python

В примере выше объект Response передавался в качестве параметра. Но также можно установить куку и с помощью явно созданного объекта Response:

from fastapi import FastAPI
from fastapi.responses import JSONResponse
from datetime import datetime

app = FastAPI()


@app.get("/")
def root():
    now = datetime.now()    # получаем текущую дату и время
    response = JSONResponse(content={"message": "куки установлены"})
    response.set_cookie(key="last_visit", value=now)
    return  response

Получение куки

Для получения куки на сервере применяется класс fastapi.Cookie. Например, получим выше установленную куку "last_visit":

from fastapi import FastAPI, Cookie

app = FastAPI()

@app.get("/")
def root(last_visit = Cookie()):
    return  {"last visit": last_visit}

Для получения куки определяется параметр с именем куки, которому присваивается объект Cookie.

Получение куки и класс Cookie в веб-приложении на FastAPI и Python

В примере выше куки была обязательна. Если ее нет в запросе, приложение выдало бы ошибку. Чтобы избежать этого, мы можем определить значение по умолчанию, в том числе None:

from fastapi import FastAPI, Cookie

app = FastAPI()

@app.get("/")
def root(last_visit: str | None = Cookie(default=None)):
    if last_visit == None:
        return {"message": "Это ваш первый визит на сайт"}
    else:
        return  {"message": f"Ваш последний визит: {last_visit}"}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850