Flask-Sitzung vergisst den Eintritt zwischen den Anfragen

8

Ich verwende die neuesten Flask / Werkzeug (Flask 0.9) clientseitigen Sitzungen, um Informationen zwischen Anfragen zu erhalten. Die Sitzung ist nicht dauerhaft eingestellt (da das Löschen des Cookies beim Schließen des Browsers in Ordnung ist).

Mein Problem ist wie folgt:

Ich verwende einen serverseitigen Code, um die Flask-Sitzungsvariable mit einem Eintrag zu füllen. Danach sieht die Session-Variable ungefähr so ​​aus:

%Vor%

Ich verwende diese Informationen, um eine Seite darzustellen, die eine GET-Anfrage (durch JQuery) an dieselbe Flask-Anwendung ausführt, aber plötzlich ist das Wörterbuch mit dem Eintrag 'items' in der Sitzung verschwunden:

%Vor%

Ich habe ein wenig herumgesucht und dachte, dass es vielleicht damit zusammenhängt, dass ich auf localhost teste (127.0.0.1 ist nicht dasselbe wie localhost). Ich habe meine Hosts-Datei korrigiert und einen Eintrag 'dev.localhost' hinzugefügt, um sicherzustellen, dass alle Anfragen vom selben Host stammen.

Außerdem zeigt der Entwicklerbereich meines Browsers (Chrome) genau die gleichen Kennungen für die Sitzungscookies an, die an den Server gesendet werden.

Auch die Einstellung von session.modified = True hilft nicht.

Das einzige, was zwischen den Anfragen wechselt, ist

%Vor%

für die erste Anfrage (die, die den items -Eintrag füllt) vs. die zweite Anfrage

%Vor%

Ich denke, dass es immer noch ein Ajax-bezogenes Ding sein könnte. Ich habe den Inhalt der Sitzungsvariablen nach einem einfachen Neuladen der Seite getestet: Der Eintrag items ist noch immer aus der Sitzung entfernt.

Jede Hilfe würde sehr geschätzt werden.

    
RJH 21.03.2013, 16:00
quelle

1 Antwort

11

Es stellt sich heraus, dass der Cookie, der an den Client (Chrome) zurückgesendet wird, das Limit von 4096 Byte für die Cookie-Größe überschreitet. Scheinbar verwendet Django standardmäßig serverseitige Sitzungen, wodurch dieses Problem nur dann auftrat, wenn ich meinen Code in Flask verschoben habe. Verwenden serverseitiger Sitzungen in Flask wie in ​​flask-kvsession und anderen sollte das Problem beheben.

    
RJH 22.03.2013 09:56
quelle