Rozdział 22 · Tworzenie stron internetowych z Python

Cookie i sesje: Status między HTTP- żądaniami

LCC1ZCCquery są od siebie niezależne — mechanizmy cookie i sesji pozwalają na powiązanie stanu między nimi.

HTTP- żądania są niezależne od siebie: sam protokół nie wiąże pojedynczego żądania z następującymi. Ale aplikacja w sekcji 22.29 już musi przechowywać coś pomiędzy żądaniami — Na przykład komunikat o błędzie, który powinien pojawić się na następnej stronie flash(...). W tym celu organizowane są cookie i sesje mechanizmy.

Cookie jest niewielką wartością, którą przeglądarka przechowuje

Cookie to mały fragment danych, o który serwer prosi przeglądarkę zapisuje, a przeglądarka następnie stosuje je do kolejnych żądań do tej samej strony. Dokładnie Serwer może powiązać wiele żądań ze sobą jako pochodzące z tego samego przeglądarka.

Prośba 1
serwer wysyła Set-Cookie
Przeglądarka
zachowuje cookie
Prośba 2
przeglądarka ponownie stosuje cookie
Serwer
łączy żądanie z tym samym cookie
Cookie przesyłany jest razem z każdym żądaniem do tej samej strony

Sesja — mechanizm przechowywania stanu między zapytaniami

Sesja (session) to mechanizm na poziomie aplikacji, który wykorzystuje cookie łączyć wiele żądań ze sobą i przechowywać część danych. Implementacje są różne: dane sesji mogą być przechowywane na serwerze (w bazie danych lub osobnej pamięci masowej, i tylko identyfikator może być przekazany do cookie), albo możesz zrobić to bezpośrednio do cookie po stronie przeglądarki. Flask domyślnie wybiera drugą opcję i zapewnia gotowy obiekt session, który zachowuje się jak słownik:

session_primer.py
from flask import session

session["poslednij_vizit"] = "22-30"
# przy następnym żądaniu tej samej przeglądarki:
session.get("poslednij_vizit")   # "22-30"

Funkcja flash(...)użyte w sekcji 22.29 Na tym samym session: mechanizmie wiadomość jest przechowywana w sesji dla kolejnego żądania i jest automatycznie usuwany po przeczytaniu get_flashed_messages() w szablonie.

Podpisany nie oznacza szyfrowania
Domyślnie Flask przechowuje zawartość sesji bezpośrednio w cookie przeglądarki, chronioną sygnaturą SECRET_KEY. Podpis gwarantuje autentyczność: Jeśli ktoś zmieni treść cookie, podpis przestanie się zgadzać i Flask odrzuci sesję. Ale podpis — nie szyfrowanie: Domyślnie zawartość sesji można odczytać bez znajomości tajnego klucza — po prostu nie można go niewykrywalnie zmienić. Nigdy nie umieszczaj haseł ani innych danych w sesji, które powinny pozostać nieczytelne dla użytkownika, którego przeglądarka je przechowuje.

Szkic tego rozdziału celowo się kończy tutaj: pełne logowanie użytkownika (uwierzytelnienie) dodałoby do rozdziału tom osobnego kursu. Gdzie temat się toczy dalej — Więcej informacji można znaleźć w sekcji 22.36.

Praktyka: Komunikacja przez flash() i session
Moduł flask nie jest zainstalowany w środowisku przeglądarki Pyodide – działa lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →