HTTP

2010-09-27 14 views
23

में एकाधिक सेट-कुकी हेडर मैं एक छोटी कक्षा लिख ​​रहा हूं जो एक बहुत ही बुनियादी HTTP क्लाइंट के रूप में कार्य करता है। एक परियोजना के हिस्से के रूप में मैं काम कर रहा हूं, मैं इसे कुकी को जागरूक बना रहा हूं। हालांकि, यह मेरे लिए अस्पष्ट है कि क्या होता है जब मेरे क्लाइंट को एक ही कुंजी के साथ कई "सेट-कुकी" शीर्षलेख प्राप्त होते हैं लेकिन अलग-अलग मान सेट होते हैं।HTTP

उदाहरण के लिए

,

Set-Cookie: PHPSESSID=abc; path=/ 
Set-Cookie: PHPSESSID=def; path=/ 
Set-Cookie: PHPSESSID=ghi; path=/ 

इनमें से कौन सा एक PHPSESSID के लिए मूल्य माना जाता है? यह आमतौर पर तब होता है जब आप उसी पृष्ठ पर session_start() और फिर session_regenerate_id() को कॉल करते हैं। प्रत्येक अपना हेडर सेट करेगा। सभी ब्राउज़रों को इसके साथ ठीक लगता है, लेकिन मुझे लगता है कि मेरे क्लाइंट को सही विकल्प चुनने के लिए नहीं लगता है।

कोई विचार ?!

उत्तर

2

उत्तर draft-ietf-httpstate-cookie में होना चाहिए।

+1

पोस्टिंग के बाद से, इसे आरएफसी 6265 द्वारा हटा दिया गया है। –

21

RFC 6265 section 4.1.2 कहता है:

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

तो मैं हेडर को क्रमशः संसाधित करता हूं और डुप्लिकेट होने पर उन्हें ओवरराइट करता हूं। तो आपके मामले में आपके पास केवल एक PHPSESSID = ghi होगा।

10

RFC 6265 कहता है:

सर्वर एक ही कुकी-नाम के साथ एक ही जवाब में एक से अधिक सेट कुकी शीर्ष लेख क्षेत्र शामिल नहीं होना चाहिए।

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

क्लाइंट के रूप में, सामान्य उपयोगकर्ता एजेंट व्यवहार अंतिम शीर्षलेख का मान लेना प्रतीत होता है।

उपयोगकर्ता एजेंट एक ही कुकी नाम, डोमेन-मूल्य, और एक कुकी है कि यह पहले से संग्रहीत के रूप में पथ-मूल्य के साथ एक नई कुकी प्राप्त करता है, मौजूदा: आरएफसी इस कथन से कि व्यवहार की ओर संकेत कुकी को निकाल दिया गया है और नई कुकी के साथ बदल दिया गया है।

+0

यह नहीं कह रहा है कि कई सेट-कुकी हेडर नहीं भेजना चाहिए। यह एक ही कुकी नाम के साथ कई शीर्षलेख कह रहा है। – Blaze

+0

फिक्स्ड, अगर यह ओपी के संदर्भ से स्पष्ट नहीं था। –