最新のFlask/Werkzeug(Flask 0.9)クライアントサイドセッションを使用してリクエスト間の情報を保持しています。セッションは永続的に設定されていません(ブラウザが閉じられたときにクッキーが削除されても問題ありません)。Flaskセッションはリクエスト間のエントリを忘れる
私がエントリーしてフラスコのセッション変数を埋めるために、いくつかのサーバー側のコードを使用します。次のように
私の問題はあります。私は、同じフラスコのアプリケーションに(jQueryの経由)GETリクエストを行い、ページをレンダリングするためにこの情報を使用しますが、突然、辞書は「アイテム」を含む
<SecureCookieSession {u'items': SOMENOTVERYIMPORTANTDICTIONARY}, '_fresh': True, 'user_id': u'1', 'csrf': '0aef1995cdf2cxx0233fdf3321d17fc7267f3b32', '_id': 'someUNIQUEcode'}*>
:この後、セッション変数は次のようになりますセッションのエントリがなくなっている:
<SecureCookieSession {'_fresh': True, 'user_id': u'1', 'csrf': '0aef1995cdf2cxx0233fdf3321d17fc7267f3b32', '_id': 'someUNIQUEcode'}>
私はいくつかの検索を周りにいた、そしてそれは私がローカルホスト上でテストしていたという事実(127.0.0.1はlocalhostのと同じではありません)に関連することができると考えました。ホストファイルを修正し、すべてのリクエストが同じホストからのものであることを確認するために 'dev.localhost'エントリを追加しました。
また、ブラウザ(Chrome)のデベロッパーウィンドウには、サーバーに送信されるセッションCookieと同じ識別子が表示されます。
また、session.modified = True
を設定しても役に立ちません。
リクエスト間で変化する唯一のものは、それはまだであってもよいことを考える最初の要求(items
エントリを移入1)対の第2の要求
__utmb=122666782.19.10.1363877633
ため
__utmb=122666782.18.10.1363877633
ですAjax関連のものです。私はセッション変数の内容を簡単なページリロードの後にテストしました:items
のエントリはまだセッションから消えています。
ご協力いただければ幸いです。
これは役立つことがありますhttp://stackoverflow.com/questions/13760008/why-do-some-flask-session-values-disappear-from-the-serceed-after-closing-the-br – codegeek
のみ'items'エントリは削除されましたか、それともあなたがセッションで設定したものですか? –
@codegeek私は質問を投稿する前にそのエントリを見て、それがクロスホストのクッキーの問題かもしれないと仮定しました。 'localhost'と' 127.0.0.1'との混乱を避けるために、私のホスト名を 'localhost.dev'に設定しました。また、私はフラスコの設定で明示的にCookieとサーバーのドメインを設定しようとしましたが、どちらも役に立ちませんでした。 – RJH