2013-03-21 6 views
8

最新の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のエントリはまだセッションから消えています。

ご協力いただければ幸いです。

+0

これは役立つことがありますhttp://stackoverflow.com/questions/13760008/why-do-some-flask-session-values-disappear-from-the-serceed-after-closing-the-br – codegeek

+0

のみ'items'エントリは削除されましたか、それともあなたがセッションで設定したものですか? –

+0

@codegeek私は質問を投稿する前にそのエントリを見て、それがクロスホストのクッキーの問題かもしれないと仮定しました。 'localhost'と' 127.0.0.1'との混乱を避けるために、私のホスト名を 'localhost.dev'に設定しました。また、私はフラスコの設定で明示的にCookieとサーバーのドメインを設定しようとしましたが、どちらも役に立ちませんでした。 – RJH

答えて

10

クッキーがクライアント(Chrome)に返送されるのは、クッキーサイズの4096バイトの制限を超えていることが判明しました。どうやらDjangoはデフォルトでサーバー側セッションを使用しています。この問題は、コードをFlaskに移動したときにのみ表示されます。 flask-kvsessionなどのFlaskでサーバーサイドセッションを使用すると、問題が解決するはずです。

+1

...私は[この以前の質問](http://stackoverflow.com/questions/7100315/flask-session-member-not-persisting-across-requests?rq=1)に遭遇したばかりです。 – RJH

+1

...実行時に警告が出ないというのは信じられないほどです。その声明はちょうど無視されているようです。私はそれが何らかの形でそれを通知することで何時間も何時間ものバグを探していたと確信しています。 :) – filannim

関連する問題