grepping SESSION_COOKIE_DOMAIN
pośrednictwem jednego repo GitHub kolba może zobaczyć, że jest ona wykorzystywana jak this:
def get_cookie_domain(self, app):
"""Helpful helper method that returns the cookie domain that should
be used for the session cookie if session cookies are used.
"""
if app.config['SESSION_COOKIE_DOMAIN'] is not None:
return app.config['SESSION_COOKIE_DOMAIN']
if app.config['SERVER_NAME'] is not None:
# chop of the port which is usually not supported by browsers
rv = '.' + app.config['SERVER_NAME'].rsplit(':', 1)[0]
# Google chrome does not like cookies set to .localhost, so
# we just go with no domain then. Flask documents anyways that
# cross domain cookies need a fully qualified domain name
if rv == '.localhost':
rv = None
# If we infer the cookie domain from the server name we need
# to check if we are in a subpath. In that case we can't
# set a cross domain cookie.
if rv is not None:
path = self.get_cookie_path(app)
if path != '/':
rv = rv.lstrip('.')
return rv
robi to samo z get_cookie_domain(
będziesz see:
def save_session(self, app, session, response):
domain = self.get_cookie_domain(app)
path = self.get_cookie_path(app)
...
OK. Teraz musimy tylko dowiedzieć się, jakiej nazwy domeny użyć. Przeszukując docs lub code zobaczysz, że save_session()
jest wywoływany w kontekście żądania. Więc wystarczy zaimportować obiekt request
od flask
modułu:
from flask import request
i użyć go wewnątrz save_session()
celu określenia nazwy domeny dla plików cookie (np z nagłówka Host
) tak:
def save_session(self, app, session, response):
domain = '.' + request.headers['Host']
path = self.get_cookie_path(app)
# the rest of the method is intact
The Jedyny czas, w którym musisz określić domenę plików cookie, to kiedy odsyłasz je z obiektem odpowiedzi. Należy pamiętać, że nagłówek Host
może być nieobecny.
Aby drut aż całość będzie trzeba podać swoją wersję (podklasa) z SecureCookieSessionInterface
:
app = Flask(__name__)
app.session_interface = MySessionInterface()
więcej linków Doc:
Witaj, Twillu, rozumiem większość z tego, co powiedziałeś, oprócz ostatniego p sztuka. Mogę uzyskać nazwę domeny, wykonując: domain = request.headers ['Host'] Nie rozumiem jednak, co masz na myśli przez "i użyj go wewnątrz funkcji save_session(), aby określić nazwę domeny dla plików cookie" . Moje pytanie brzmi: kiedy otrzymam nazwę domeny, gdzie/jak ją ustawić? Dziękuję Ci. –
Proszę zobaczyć zaktualizowaną odpowiedź. Mam nadzieję, że masz pomysł. – twil
Cześć, jestem nowy w kolbie/pytonie, ale mam pomysł. Spróbuję go później podłączyć, dziękuję. –