2010-07-07 6 views
10

एक ही कुकी नाम सुरक्षित के साथ HttpServletResponse.addCookie() को कॉल कर रहा है?

HttpServletResponse.addCookie(); 

कई बार (सर्वलेट-api-2.5 से) बुला सुरक्षित ही नाम के साथ एक कुकी का उपयोग कर रहा है?

इस अर्थ में सुरक्षित है कि एक निर्धारक व्यवहार है, उदा। बाद की कॉलों को अनदेखा कर दिया जाएगा (पहली जीत) या बाद की कॉल हमेशा कुकी या कुछ ऐसा बदल देगा?

उदाहरण:

HttpServletResponse response = ...; 
response.addCookie(new Cookie("foo", "bar")); 
response.addCookie(new Cookie("foo", "42")); 

कौन सा मूल्य को हस्तांतरित किया जाएगा और संग्रहीत ब्राउज़र द्वारा?

उत्तर

6

अद्यतन उत्तर - @skaffman और @Stephen C से टिप्पणियों के रूप में यह आदर्श अभ्यास नहीं है।

आरएफसी युक्ति http://www.ietf.org/rfc/rfc2109.txt राज्यों

पर नाम = अधिक महत्व देते हैं-मान युग्म प्रत्येक कुकी में पहली आना चाहिए। यदि कोई विशेषता कुकी में एक से अधिक बार दिखाई देती है, तो व्यवहार अपरिभाषित है।

सेट कुकी: foo = बार
सेट कुकी:

बिलाव सर्वर पर, व्यवहार वास्तविक ब्राउज़र को भेज दिया हेडर है foo = 42

यहां foo ओवरराइट हो जाता है। कुकी पढ़ना बाद में आप 42

+1

यह सब साबित होगा कि 'HttpServletResponse' का एक विशिष्ट कार्यान्वयन कुछ करता है। एपीआई व्यवहार को परिभाषित नहीं करता है, हालांकि, अन्य कार्यान्वयन कुछ और कर सकते हैं। – skaffman

+0

वैसे मैंने सुझाव दिया है कि O/P व्यवहार को – JoseK

+2

व्यवहार को सत्यापित करने के लिए अपने सर्वर पर आज़माएं, यह सुझाव देना बेहतर होगा कि वह बिल्कुल ऐसा नहीं करता! यह एक संभावित पोर्टेबिलिटी मुद्दा बना रहा है। –

2

अतिरिक्त टिप्पणी देता है - ध्यान दें एक ही जवाब में एक ही नाम के साथ कुकीज़ पर विभिन्न उप-डोमेन की स्थापना में परिवर्तन है कि व्यवहार। मैंने सिर्फ उसी नाम के साथ कुकीज़ को सहेजने का परीक्षण किया, लेकिन मेरे मैक पर जावा 1.6/फ़ायरफ़ॉक्स/सफारी/क्रोम के नवीनतम संस्करणों पर विभिन्न उप-डोमेन, और यह दोनों कुकीज़ को सहेजने के लिए अपेक्षित व्यवहार किया गया। मैं समझता हूं कि इस व्यवहार को spec द्वारा गारंटी नहीं है, लेकिन केवल यह कहें कि 'इसके बारे में जागरूक होना उपयोगी हो सकता है।

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