2010-02-09 12 views
6

मुझे कुकी से मूल्य प्राप्त करने में समस्या है जिसमें अल्पविराम शामिल है। यह पूर्ण स्ट्रिंग नहीं देता है लेकिन पहले कॉमा में स्ट्रिंग काट दिया जाता है। उदाहरण के लिए:जावा में कुकी से मूल्य नहीं प्राप्त कर सकता है। मूल्य में अल्पविराम शामिल हैं।

// cookie value = var1,var2,var3 
String cookieVal = cookie.getValue(); 
//cookieVal now is "var1" instead of "var1,var2,var3" 

और

// cookie value = var1=var2=var3 
String cookieVal = cookie.getValue(); 
//cookieVal now is "var1=var2=var3" 

क्या मैं गलत कर रहा हूं।

+0

क्या आपने अंततः अपनी समस्या का समाधान किया? क्या आपने एक बग-रिपोर्ट दर्ज की है? – Bozho

+0

नहीं, इसके लिए कोई समाधान नहीं है। मैंने Google एनालिटिक्स के लिए बग भर दी है (gdata-issues, बेहतर जगह नहीं मिल सका)। –

+0

क्या आपने संस्करण 1 (आरएफसी 210 9) पढ़ने के लिए जावा को लागू करने का एक तरीका निकाला है? –

उत्तर

2

अल्पविराम http-हेडर मान परिभाषा का हिस्सा है, इसलिए आपके कुकी मान में url-encode अल्पविराम।

URLEncoder.encode(cookieValue); 

मैं इस पाया:।

"यह [कुकी मान] स्ट्रिंग सेमी-कोलन, अल्पविराम और सफेद स्थान को छोड़कर वर्णों का एक क्रम है अगर इस तरह के डेटा रखने के लिए की जरूरत है नाम या मूल्य में, जैसे कि URL शैली% XX एन्कोडिंग के रूप में कुछ एन्कोडिंग विधि की सिफारिश की है, हालांकि कोई एन्कोडिंग परिभाषित किया गया है या आवश्यक "

RFC का कहना है:

अनौपचारिक रूप से, सेट-कुकी प्रतिक्रिया हेडर टोकन सेट कुकी :, एक या अधिक कुकी की एक अल्पविराम से अलग किए, जिसके बाद शामिल हैं। प्रत्येक कुकी NAME = VALUE जोड़ी से शुरू होती है, उसके बाद शून्य या अधिक सेमी-कोलन-पृथक विशेषता-मूल्य जोड़े होती है।

अद्यतन: आप स्पष्ट करने के बाद कि आप गूगल से एक कुकी को पार्स कर रहे हैं: मैं अपने सभी __utmX कुकीज़ के माध्यम से देखा और उनमें से कोई अल्पविराम का होता है। डेलीमीटर | या यूआरएल-एन्कोडेड :

+0

जैसा कि मैंने उपरोक्त लिखा है: मैं कुकी सेट नहीं कर रहा हूं। मैं केवल Google की __umtv कुकी का विश्लेषण करने की कोशिश कर रहा हूं। –

+0

@mynthon - मुझे अपनी साइट का लिंक दें। मुझे विश्वास नहीं है कि __utm कुकी के कमांड – Bozho

+0

दिखाए जा सकते हैं क्योंकि यह उत्पादन चरण में नहीं है, लेकिन मैंने अपनी वेबसाइट पर डेमो तैयार किया है: http://mynthon.net/_lab/gacookie –

5

Cookie Documentation पर एक नज़र डालें। इसे कहते हैं:

इस वर्ग के दोनों संस्करण 0 (नेटस्केप द्वारा) और संस्करण 1 कुकी विनिर्देशों (RFC 2109 से) का समर्थन करता है। डिफ़ॉल्ट द्वारा, संस्करण 0 का उपयोग करके कुकीज़ इंटरऑपरेबिलिटी सुनिश्चित करने के लिए बनाई गई हैं।

और अगर आप setValue विधि देखें तो आप इस

साथ संस्करण 0 कुकीज़

, मूल्यों सफेद स्थान, कोष्ठक, कोष्ठक, शामिल नहीं होना चाहिए मिलेगा संकेत, अल्पविराम, डबल कोट, स्लैश, प्रश्न के बराबर होती है अंक, कॉलन, और अर्धविराम पर अंक। रिक्त मान सभी ब्राउज़रों पर समान तरीके से व्यवहार नहीं कर सकते हैं।

संपादित करें: बस Google चीज़ पढ़ें। शायद संस्करण को 1 पर सेट करने का प्रयास करें और देखें कि यह कैसे काम करता है।

0

क्या आप वाकई कुकी में एक सेट स्टोर करने की ज़रूरत है? पहचानकर्ताओं के अलावा डेटा स्टोर करने के लिए आईएमएचओ कुकीज़ का उपयोग नहीं किया जाना चाहिए।जब भी संभव हो, सर्वर-साइड पर डाटा स्टोरेज किया जाना चाहिए।

+0

Google अपनी "__utmv" कुकीज़ में अल्पविराम का उपयोग करता है और मुझे Google कुकी का विश्लेषण करना होगा। –

+0

आह। ठीक है। तो निश्चित रूप से आपको लोंबो के जवाब से चिपकना होगा ;-) – er4z0r

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