प्रतिक्रिया संदेश में उपयोग किए जाने पर "कनेक्शन: क्लोज़" का क्या अर्थ है?


30

जब क्लाइंट Connection: closeअनुरोध संदेश में हेडर का उपयोग करता है , तो इसका मतलब है कि वह प्रतिक्रिया संदेश भेजने के बाद सर्वर को कनेक्शन बंद करना चाहता है।

मुझे लगा कि यह शीर्ष लेख केवल अनुरोध संदेशों में उपयोग किया जाता है, लेकिन मैंने देखा है कि इसका उपयोग प्रतिक्रिया संदेशों में भी किया जाता है। उदाहरण के लिए:

यहां छवि विवरण दर्ज करें

प्रतिक्रिया संदेश में उपयोग किए जाने पर इस शीर्षक का क्या अर्थ है?

मुझे लगता है कि इसका मतलब है कि प्रतिक्रिया संदेश भेजने के बाद सर्वर कनेक्शन बंद कर देगा (भले ही ग्राहक ने Connection: keep-aliveअपने अनुरोध संदेश में हेडर का उपयोग किया हो )। क्या मैं सही हूँ?

जवाबों:


28

हां यह सही है। सर्वर केवल यह कह सकता है कि "मैं आपके बनाए-जीवित अनुरोध का समर्थन नहीं करता और जब मैं समाप्त कर लूंगा तब कनेक्शन बंद कर दूंगा"।

RFC 2616 से, धारा 14.10:

HTTP / 1.1 प्रेषक को
संकेत के लिए "करीब" कनेक्शन विकल्प को परिभाषित करता है कि
प्रतिक्रिया के पूरा होने के बाद कनेक्शन बंद हो जाएगा । उदाहरण के लिए,

   Connection: close

या तो अनुरोध या प्रतिक्रिया हेडर फ़ील्ड इंगित करता है कि
वर्तमान अनुरोध / प्रतिक्रिया के पूरा होने के बाद कनेक्शन को `स्थायी '(धारा 8.1) नहीं माना जाना चाहिए ।

HTTP / 1.1 अनुप्रयोग जो लगातार कनेक्शन का समर्थन नहीं करते हैं, उन्हें हर संदेश में "करीब" कनेक्शन विकल्प शामिल करना चाहिए।


3
यह अजीब IMO है, यह कहने के लिए कि कनेक्शन बंद हो जाएगा, अगर सर्वर बस इसे बंद कर सकता है? ग्राहक नहीं होना चाहिए तो बस यह देखें कि कनेक्शन सर्वर द्वारा बंद कर दिया गया था। किसी भी विचार इस हेडर में बिंदु क्या था? मुझे यहाँ कोई मूल्य नहीं दिखता।
पावेल पी

1
@Pavel वेब एप्लिकेशन में "कनेक्शन: क्लोज़" http हेडर उन मामलों में प्रतिक्रिया में शामिल होता है, जहां यह चाहता है कि फ्रंट-एंड लोड बैलेंसर को सूचित रखें कि जीवित कनेक्शन को बंद करने के लिए लोड बैलेंसर एक का उपयोग कर रहा है।
तुलसी एक

1
@ बासीला ताकि लोड बैलेंसर सर्वर या क्लाइंट से कनेक्शन बंद कर दे? IMO लोड बैलेंसर यह देख सकता है कि कनेक्शन सर्वर द्वारा बंद कर दिया गया था और यह जान लेगा कि बिना किसी हेडर को पढ़े। इसके अलावा रिवर्स सच है: सर्वर Connection: closeहेडर के बिना कनेक्शन बंद कर सकता है
पावेल पी

@Pavel लोडबेलर आमतौर पर कई क्लाइंट से कई कनेक्शन प्राप्त करता है और बैकएंड के साथ एक ही कनेक्शन का उपयोग मल्टीप्लैक्सिंग को एक जीवित-जीवित कनेक्शन के माध्यम से करता है। जब कुछ बैकएंड इस मल्टीप्लेक्सिंग का हिस्सा नहीं बनना चाहते हैं, तो बैकएंड http प्रतिक्रिया में लोड बैलेंसर को सूचित करने के लिए एक "कनेक्शन: क्लोज़" शामिल होना चाहिए ताकि यह कनेक्शन बंद हो जाए और मल्टीप्लेक्सिंग बंद हो जाए। इसका वर्णन एडब्ल्यूएस लोड बैलेंसिंग गाइड ('HTTP कनेक्शन्स' पर स्क्रॉल करें) docs.aws.amazon.com/elasticloadbalancing/latest/userguide/…
तुलसी ए

2
@ बासीला लगता है कि आप सही हैं। दिलचस्प। कनेक्शन सामान्य-हेडर फ़ील्ड प्रेषक को उन विकल्पों को निर्दिष्ट करने की अनुमति देता है जो उस विशेष कनेक्शन के लिए वांछित हैं और आगे के कनेक्शन के लिए प्रॉक्सी द्वारा संचार नहीं किया जाना चाहिए।
डैनियल एफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.