2013-01-31 15 views
6

रखने वाले कुकी सर्वर द्वारा सेट किया गया है, मैं सर्वलेट # 4 के साथ एक कुकी सेट करने की कोशिश कर रहा हूं? Servlet प्रतिक्रिया में Wn5pZ1JwQnlLEGRJAgB4WQU% 3 डी।कुकी सर्वर को डबल कोट्स

लेकिन जब मैं ब्राउज़र में कुकी सेट इसे इस तरह इसके आसपास के उद्धरण के साथ वापस आ गया है:

"? अज्ञात # 4 Wn5pZ1JwQnlLEGRJAgB4WQU% 3 डी"।

ऐसा क्यों हो रहा है? हम जेटी को एप्लिकेशन सर्वर के रूप में उपयोग कर रहे हैं।

मैं कोड जो मैं लिखा है डाल देंगे

String cookieValue = "unkown#4?Wn5pZ1JwQnlLEGRJAgB4WQU%3D"; 
Cookie zedoCookie = new Cookie("cookiename", cookieValue); 
zedoCookie.setMaxAge(31536000); // this is one year duration. 
zedoCookie.setDomain("somedomain.com"); 
zedoCookie.setPath("/"); 
response.addCookie(zedoCookie); 

कोई इस पर कुछ प्रकाश डाल सकते हैं?

मुझे पहले से ही this पर एक नज़र डाली है। लेकिन ऐसा लगता है कि यह मेरी समस्या का समाधान नहीं करता है।

उत्तर

8

ऐसा लगता है कि जेट्टी 8 (या पहले) कुकीज में अनुमति नहीं दी गई निम्न वर्णों का इलाज करता है: "\\n\r\t\f\b%+ ;= (HttpFields ->__COOKIE_DELIM)। यदि इनमें से एक वर्ण कुकी के मूल्य में निहित है, तो मान HTTP-शीर्षलेख में डबल कोट्स में संलग्न होगा। यूआरएल-एन्कोडिंग समस्या का समाधान नहीं करती है, तब से आपके पास अभी भी % चरित्र होगा। मेरे लिए यह एक बग की तरह लगता है। मैंने Jetty mailing list पर एक प्रश्न पोस्ट किया। मेलिंग सूची पर एक और पोस्ट भी है, जो बताती है कि जेटी संस्करण 9 में कुकी संस्करण क्यों उठाया गया है।

+0

+1 इसके लिए धन्यवाद। मैंने अपनी बेस 64 कुकी को रिक्त स्थान के बिना संग्रहीत करने के लिए '+' -> '-', '/' -> '।', और '=' -> '_' को परिवर्तित किया था। – Gray

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