2013-03-21 11 views
8

के बीच प्रविष्टि भूल जाता है मैं अनुरोधों के बीच जानकारी जारी रखने के लिए नवीनतम फ्लास्क/वेर्कज़ेग (फ्लास्क 0.9) क्लाइंट-साइड सत्र का उपयोग कर रहा हूं। सत्र लगातार जारी नहीं है (क्योंकि ब्राउजर बंद होने पर कुकी को हटाए जाने के साथ ठीक है)।फ्लास्क सत्र अनुरोध

मैं कुछ सर्वर-साइड कोड का उपयोग एक प्रवेश के साथ कुप्पी सत्र चर को भरने के लिए:

मेरे समस्या इस प्रकार है। इस के बाद, सत्र चर इस तरह दिखता है:

<SecureCookieSession {u'items': SOMENOTVERYIMPORTANTDICTIONARY}, '_fresh': True, 'user_id': u'1', 'csrf': '0aef1995cdf2cxx0233fdf3321d17fc7267f3b32', '_id': 'someUNIQUEcode'}*> 

मैं इस जानकारी का उपयोग एक पृष्ठ है कि एक ही बोतल आवेदन करने के लिए एक GET अनुरोध (JQuery के माध्यम से) करता है रेंडर करने के लिए, लेकिन अचानक शब्दकोश 'आइटम' वाले सत्र में प्रवेश चला गया है:

<SecureCookieSession {'_fresh': True, 'user_id': u'1', 'csrf': '0aef1995cdf2cxx0233fdf3321d17fc7267f3b32', '_id': 'someUNIQUEcode'}> 

मैं कुछ चारों ओर खोज किया था, और सोचा था कि यह सच है कि मैं स्थानीय होस्ट पर परीक्षण कर रहा हूँ (127.0.0.1 स्थानीय होस्ट के रूप में ही नहीं है) से संबंधित हो सकता। मैंने अपनी मेजबान फ़ाइल को ठीक किया और यह सुनिश्चित करने के लिए कि सभी अनुरोध एक ही होस्ट से हैं, 'dev.localhost' प्रविष्टि को जोड़ा गया है।

इसके अलावा, मेरे ब्राउज़र (क्रोम) का डेवलपर फलक सर्वर पर भेजे जाने वाले सत्र कुकीज़ के लिए बिल्कुल वही पहचानकर्ता दिखाता है।

इसके अलावा, session.modified = True सेटिंग में मदद नहीं करता है।

केवल बात यह है कि अनुरोधों के बीच बदलता है

__utmb=122666782.18.10.1363877633 
पहले अनुरोध (एक है कि items प्रविष्टि भरता है) बनाम दूसरा अनुरोध

__utmb=122666782.19.10.1363877633 

में सोच रही थी यह अभी भी हो सकता है कि के लिए

है एक अजाक्स से संबंधित चीज। मैंने एक सीधा पृष्ठ रीलोड के बाद सत्र चर की सामग्री का परीक्षण किया: items प्रविष्टि अभी भी सत्र से चली गई है।

किसी भी मदद की सराहना की जाएगी।

+0

यह मदद कर सकता है http://stackoverflow.com/questions/13760008/why-do-some-flask-session-values-disappear-from-the- सत्र-after-closing-the-br – codegeek

+0

केवल 'आइटम्स 'एंट्री हटा दी गई है या क्या आपने सत्र में सेट किया है? –

+0

@codegeek मैंने अपना प्रश्न पोस्ट करने से पहले उस प्रविष्टि पर एक नज़र डाली थी, और माना कि यह एक क्रॉस-होस्ट कुकी समस्या हो सकती है। मैंने 'localhost' और '127.0.0.1' के बीच भ्रम से बचने के लिए अपना होस्टनाम' localhost.dev' पर सेट किया है। साथ ही, मैंने फ्लास्क कॉन्फ़िगरेशन में कुकी और सर्वर डोमेन को स्पष्ट रूप से सेट करने का प्रयास किया, लेकिन इससे कोई मदद नहीं मिली। – RJH

उत्तर

10

यह पता चला है कि कुकी को वापस भेजा जा रहा कुकी (क्रोम) कुकी आकार के लिए 4096 बाइट सीमा से अधिक है। स्पष्ट रूप से Django डिफ़ॉल्ट रूप से सर्वर-साइड सत्र का उपयोग करता है, जिसने यह समस्या केवल तब दिखाई दी जब मैंने अपना कोड फ्लास्क पर ले जाया। फ्लास्क में सर्वर साइड सत्र का उपयोग करना जैसे कि flask-kvsession और अन्य को समस्या को ठीक करना चाहिए।

+1

... अगर मैं केवल [इस पुराने प्रश्न] पर झुका हुआ था (http://stackoverflow.com/questions/7100315/flask-session-member-not-persisting-across-requests?rq=1) पहले। – RJH

+1

... यह अविश्वसनीय है कि हमें रन टाइम पर कोई चेतावनी नहीं मिलती है। ऐसा लगता है कि बयान सिर्फ अनदेखा किया गया है। मुझे यकीन है कि इसे किसी भी तरह से सिग्नल करने से गतिविधि की मांग करने वाले घंटों और घंटों की बचत होगी। :) – filannim

संबंधित मुद्दे