2010-07-13 12 views
36

जहां तक ​​मुझे पता है कि HTTP spec द्वारा उसी नाम से एक से अधिक HTTP शीर्षलेख सेट करने की अनुमति है। क्या ऐसा करने के लिए कोई उपयोग केस है (क्लाइंट से सर्वर और इसके विपरीत)?एक ही नाम के साथ एक से अधिक HTTP शीर्षलेख सेट करें?

HTTP 1.1 Section 4.2:

के साथ एकाधिक संदेश-हेडर फील्ड में एक ही क्षेत्र के नाम संदेश में मौजूद हो सकता यदि और केवल यदि है कि शीर्ष लेख क्षेत्र के लिए पूरे क्षेत्र के मूल्य है एक के रूप में परिभाषित अल्पविराम से अलग सूची [यानी, # (मान)]। यह कई शीर्ष लेख फ़ील्ड में संयोजन संभव किया जाना चाहिए:,, "क्षेत्र के नाम क्षेत्र के मूल्य" जोड़ी अर्थ विज्ञान बदलते संदेश के बिना पहली करने के लिए प्रत्येक बाद क्षेत्र के मूल्य जोड़कर, प्रत्येक अलग एक अल्पविराम से। आदेश जिसमें एक ही क्षेत्र के नाम के साथ शीर्ष लेख फ़ील्ड प्राप्त कर रहे हैं इसलिए की व्याख्या संयुक्त फ़ील्ड मान के लिए महत्वपूर्ण है, और इस तरह एक प्रॉक्सी इन क्षेत्र के मानों का क्रम बदल नहीं करना चाहिए जब कोई संदेश है अग्रेषित।

यदि मैं गलत नहीं हूं तो ऐसा कोई मामला नहीं है जहां एक ही नाम वाले एकाधिक शीर्षकों की आवश्यकता हो।

+3

"अगर मैं गलत नहीं हूँ कोई इस मामले में जहां एक ही नाम के साथ कई हेडर की जरूरत है नहीं है।" - आप सही हैं, और ऐसा कुछ नहीं है जो मैं आपके और कच्चे हेडर के बीच कौन सी तकनीकें बैठा हूं, इस पर निर्भर करता हूं कि मैं सही तरीके से समर्थित हूं। – heisenberg

+5

डुप्लिकेट हेडर देखे जाने का एकमात्र समय 'सेट-कुकी' के लिए है। – TRiG

+0

संबंधित प्रश्न: [डुप्लिकेट HTTP प्रतिक्रिया हेडर स्वीकार्य हैं?] (Http://stackoverflow.com/questions/4371328/are-duplicate-http-response-headers- अस्वीकार्य)। वेबडावी हेडर हेडर नाम डुप्लिकेट के [अन्य उदाहरण] (https://github.com/joyent/node/issues/2750) हैं। – chrisjleu

उत्तर

17

के बाद से डुप्लीकेट शीर्षलेख विभिन्न वेब सर्वर और API के साथ मुद्दों (चाहे क्या कल्पना का कहना है की) पैदा कर सकता है, मुझे शक है किसी भी सामान्य प्रयोजन उपयोग के मामले में, जहां इस सबसे अच्छा अभ्यास है नहीं है। ऐसा नहीं है कि कहीं कहीं कोई ऐसा नहीं कर रहा है।

+0

संदेश प्रारूप और एपीआई की अलग-अलग आवश्यकताएं हैं ... –

+0

सामग्री सुरक्षा नीति एकाधिक शीर्षकों को संभालने के लिए है। Https://twitter.com/mikewest/status/841892857736765443 देखें जहां यह समस्या का कारण बनता है। – oreoshake

4

यह केवल एक बहुत ही विशिष्ट प्रारूप का उपयोग कर हेडर के लिए अनुमति है, RFC 2616, Section 4.2 देखें।

+0

उन्होंने इस सवाल में स्पष्ट रूप से कहा कि वह इसकी अनुमति को महसूस करता है, वह वह नहीं है जो वह पूछ रहा है। – heisenberg

+6

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

30

यह आमतौर पर Set-Cookie: के लिए उपयोग किया जाता है। कई सर्वर एक से अधिक कुकी सेट करते हैं।

बेशक, आप उन्हें हमेशा एक ही शीर्षलेख में सेट कर सकते हैं।

असल में, मुझे लगता है कि आप एक शीर्षलेख में एकाधिक कुकीज़ सेट नहीं कर सकते हैं। तो यह एक आवश्यक उपयोग-मामला है।

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

तो, यदि आप अपने Set-Cookie शीर्षलेखों में Expires पैराम्स का उपयोग करते हैं और आप नहीं चाहते हैं कि आपकी सभी कुकीज़ एक ही समय में समाप्त हो जाएं, तो आपको शायद एकाधिक शीर्षलेखों का उपयोग करने की आवश्यकता है।

+0

आप उन्हें आसानी से एक ही शीर्ष में सेट कर सकते हैं: सेट-कुकी: हैलो = दुनिया; अवधारणा = प्रमाणित – BronzeByte

+3

आह, लेकिन क्या आप एक ही शीर्षलेख में अलग-अलग समाप्ति के साथ कुकीज़ सेट कर सकते हैं? कहें, क्या आप इसे एक हेडर में बदल सकते हैं? सेट-कुकी: name1 = value1; समाप्ति = बुध, 22 फरवरी 2012 17:45:00 जीएमटी सेट-कुकी: name2 = value2; समाप्ति = बुध, 09 जून 2021 10:18:14 जीएमटी – sligocki

+0

वह एक्सपियर नामक ब्राउजर में एक कुकी को सहेज लेगा और दूसरे द्वारा ओवरराइड किया जाएगा ..., मैंने इस बीच एक सर्वर साइड सत्र बैक-एंड बनाया है, 100% सुरक्षित, सुपर आसान और जावा ऑब्जेक्ट्स की बचत संभव – BronzeByte

0

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

1

जैसा कि आप उपयोग-मामलों की तलाश में हैं, शायद Accept मान्य होगा।

  • स्वीकार करें: आवेदन/json
  • स्वीकार करें: application/xml
-1

मेरी विनम्र राय में, अलग अल्पविराम के साथ ही उन हेडर, जिसका मूल्य व्यक्त किया जा सकता (परिभाषित), में लिखा जा सकता है एकल या एकाधिक मान वाले एकाधिक शीर्षलेख।

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

Entries-In-Order: Jane,John,Charlie 

कि हैडर मूल्य इसकी परिभाषा और सर्वर द्वारा वैध है या ग्राहक यह को जानता है। और फिर हम इसे के रूप में

Entries-In-Order: Jane,John 
Entries-In-Order: Charlie 

अलग कर सकते हैं लेकिन किसी भी हेडर समझ में नहीं आता अल्पविराम से अलग मूल्य से अधिक में नहीं लिखा जा सकता है।

Who-Are-Responsible: John, Jane or maybe Charlie? 

हैं, परिभाषा के द्वारा, सर्वर या क्लाइंट किसी एकल मान के रूप में पूरी स्ट्रिंग (John,Jane,maybe Charlie?), एक बहु हेडर अपेक्षा के अनुरूप काम नहीं होगा के रूप में यह लिख संभाल सकता है।

My-Dummy-Header: John 
My-Dummy-header: Jane or maybe Charlie? 
+2

यह आपकी राय नहीं है, यह दोहराने वाली जानकारी है जो पहले से ही प्रश्न में है। – hobbs

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