हाइपरटेक्स्ट परहस्त शिष्टाचार

हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) वितरित, सहयोगी, हाइपरमीडिया सूचना प्रणाली के लिए इंटरनेट प्रोटोकॉल सूट मॉडल में एक अनुप्रयोग परत प्रोटोकॉल है। HTTP वर्ल्ड वाइड वेब के लिए डेटा संचार की नींव है, जहां हाइपरटेक्स्ट दस्तावेज़ों में अन्य संसाधनों के हाइपरलिंक्स शामिल होते हैं जिन्हें उपयोगकर्ता आसानी से एक्सेस कर सकता है, उदाहरण के लिए कम्प्यूटर का माउस क्लिक या वेब ब्राउज़र में स्क्रीन टैप करके।

HTTP का विकास 1989 में सर्न में टिक बैरनर्स - ली द्वारा शुरू किया गया था और क्लाइंट के व्यवहार का वर्णन करने वाले एक साधारण दस्तावेज़ में सारांशित किया गया था और पहले HTTP प्रोटोकॉल संस्करण का उपयोग करने वाले सर्वर को 0.9 नाम दिया गया था। <रेफरी नाम = HTTP/0.9-विनिर्देश>

HTTP प्रोटोकॉल का वह पहला संस्करण जल्द ही एक अधिक विस्तृत संस्करण में विकसित हुआ जो कि भविष्य के संस्करण 1.0 की ओर पहला मसौदा था। यह 1997 में (संस्करण 1.1 के रूप में) विकसित हुआ और फिर इसके विनिर्देशों को 1999, 2014 और 2022 में अद्यतन किया गया। रेफरी> (1997) द्वारा अप्रचलित किया गया था 1999 में, जिसे अप्रचलित कर दिया गया था  2014 में, जिसे अप्रचलित किया गया था  2022 में। HTTPS नाम का इसका सुरक्षित संस्करण 80% से अधिक वेबसाइटों द्वारा उपयोग किया जाता है। HTTP / 2, 2015 में प्रकाशित, वायर पर HTTP के शब्दार्थ की अधिक कुशल अभिव्यक्ति प्रदान करता है। अब इसका उपयोग 41% वेबसाइटों द्वारा किया जाता है और लगभग सभी वेब ब्राउज़रों (97% से अधिक उपयोगकर्ताओं) द्वारा समर्थित है। यह एप्लिकेशन-लेयर प्रोटोकॉल बातचीत (ALPN) एक्सटेंशन का उपयोग करके परिवहन परत सुरक्षा (TLS) पर प्रमुख वेब सर्वरों द्वारा भी समर्थित है। जहां TLS 1.2 या नए की आवश्यकता है। HTTP/3, HTTP/2 का उत्तराधिकारी, 2022 में प्रकाशित हुआ था। अब इसका उपयोग 25% से अधिक वेबसाइटों द्वारा किया जाता है और कई वेब ब्राउज़रों (75% से अधिक उपयोगकर्ताओं) द्वारा समर्थित है। HTTP/3 अंतर्निहित ट्रांसपोर्ट प्रोटोकॉल के लिए ट्रांसमिशन कंट्रोल प्रोटोकॉल के बजाय QUIC का उपयोग करता है। HTTP/2 की तरह, यह प्रोटोकॉल के पिछले प्रमुख संस्करणों को अप्रचलित नहीं करता है। HTTP/3 के लिए समर्थन पहले Cloudflare और Google Chrome में जोड़ा गया था, और फ़ायर्फ़ॉक्स में भी सक्षम है। HTTP / 3 में वास्तविक दुनिया के वेब पेजों के लिए कम विलंबता है, यदि सर्वर पर सक्षम किया गया है, तो HTTP / 2 की तुलना में तेज़ी से लोड होता है, और HTTP / 1.1 से भी तेज़, कुछ मामलों में HTTP / 1.1 से 3 × तेज़ (जो अभी भी है) आमतौर पर केवल सक्षम)।

तकनीकी सिंहावलोकन
HTTP क्लाइंट-सर्वर मॉडल में अनुरोध-प्रतिक्रिया प्रोटोकॉल के रूप में कार्य करता है। एक वेब ब्राउज़र, उदाहरण के लिए, 'क्लाइंट' हो सकता है, जबकि एक कंप्यूटर होस्ट (नेटवर्क) पर चलने वाली एक प्रक्रिया (कंप्यूटिंग), जिसका नाम वेब सर्वर है, एक या अधिक वेबसाइटें 'सर्वर' हो सकती हैं। क्लाइंट सर्वर को HTTP अनुरोध संदेश सबमिट करता है। सर्वर, जो क्लाइंट की ओर से 'संसाधन' जैसे HTML फ़ाइलें और अन्य सामग्री प्रदान करता है या अन्य कार्य करता है, क्लाइंट को 'प्रतिक्रिया' संदेश देता है। प्रतिक्रिया में अनुरोध के बारे में पूर्णता की स्थिति की जानकारी होती है और इसके संदेश के मुख्य भाग में अनुरोधित सामग्री भी हो सकती है।

वेब ब्राउजर यूजर एजेंट (यूए) का एक उदाहरण है। अन्य प्रकार के उपयोगकर्ता एजेंट में खोज प्रदाताओं (वेब ​​​​क्रॉलर), आवाज ब्राउज़र, मोबाइल एप्लिकेशन और अन्य सॉफ़्टवेयर द्वारा उपयोग किए जाने वाले इंडेक्सिंग सॉफ़्टवेयर शामिल हैं जो वेब सामग्री तक पहुंचते हैं, उपभोग करते हैं या प्रदर्शित करते हैं।

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

इंटरमीडिएट एचटीटीपी नोड्स (प्रॉक्सी सर्वर, वेब कैश आदि) को उनके कार्यों को पूरा करने की अनुमति देने के लिए, एचटीटीपी HTTP हेडर फ़ील्ड की सूची (एचटीटीपी अनुरोधों/प्रतिक्रियाओं में पाई जाती है) को प्रबंधित किया जाता है हॉप-बाय-हॉप परिवहन|हॉप-बाय-हॉप जबकि अन्य HTTP शीर्षलेख एंड-टू-एंड सिद्धांत | एंड-टू-एंड प्रबंधित हैं (केवल स्रोत क्लाइंट और लक्ष्य वेब सर्वर द्वारा प्रबंधित)।

HTTP एक एप्लिकेशन लेयर प्रोटोकॉल है जिसे इंटरनेट प्रोटोकॉल सूट के ढांचे के भीतर डिज़ाइन किया गया है। इसकी परिभाषा एक अंतर्निहित और विश्वसनीय ट्रांसपोर्ट परत प्रोटोकॉल मानती है, इस प्रकार ट्रांसमिशन कंट्रोल प्रोटोकॉल (टीसीपी) का आमतौर पर उपयोग किया जाता है। हालाँकि, HTTP को उपयोगकर्ता डेटाग्राम प्रोटोकॉल उपयोगकर्ताUDP) जैसे अविश्वसनीय प्रोटोकॉल का उपयोग करने के लिए अनुकूलित किया जा सकता है, उदाहरण के लिए HTTPU और सरल सेवा डिस्कवरी प्रोटोकॉल (SSDP) में।

यूनिफॉर्म रिसोर्स पहचानकर्ता (URI's) योजनाओं http और https का उपयोग करके, यूनिफ़ॉर्म रिसोर्स लोकेटर्स (URLs) द्वारा वेब संसाधनों की पहचान की जाती है और नेटवर्क पर स्थित किया जाता है। जैसा कि परिभाषित किया गया है, URI को HTML दस्तावेज़ों में हाइपरलिंक्स के रूप में एन्कोड किया गया है, ताकि आपस में जुड़े हाइपरटेक्स्ट दस्तावेज़ बन सकें।

HTTP/1.0 में प्रत्येक संसाधन अनुरोध के लिए एक ही सर्वर के लिए एक अलग कनेक्शन-उन्मुख संचार किया जाता है। एचटीटीपी/1.1 में इसके बजाय एक टीसीपी कनेक्शन का पुन: उपयोग कई संसाधन अनुरोध (यानी एचटीएमएल पेज, फ्रेम, इमेज, क्लाइंट-साइड स्क्रिप्टिंग, व्यापक शैली पत्रक आदि) करने के लिए किया जा सकता है। HTTP/1.1 संचार इसलिए कम विलंबता (इंजीनियरिंग) का अनुभव करते हैं क्योंकि टीसीपी कनेक्शन की स्थापना विशेष रूप से उच्च यातायात स्थितियों के तहत काफी ओवरहेड प्रस्तुत करती है। एचटीटीपी/2 पिछले एचटीटीपी/1.1 का एक संशोधन है ताकि समान क्लाइंट-सर्वर मॉडल और समान प्रोटोकॉल विधियों को बनाए रखा जा सके लेकिन इन अंतरों के क्रम में: HTTP/2 संचार इसलिए बहुत कम विलंबता का अनुभव करते हैं और, ज्यादातर मामलों में, HTTP/1.1 संचार से भी अधिक गति।
 * टेक्स्ट के बजाय मेटाडेटा (HTTP हेडर) के एक संकुचित बाइनरी प्रतिनिधित्व का उपयोग करने के लिए, ताकि हेडर को बहुत कम जगह की आवश्यकता हो;
 * 2 से 8 टीसीपी/आईपी कनेक्शन के बजाय प्रत्येक एक्सेस किए गए सर्वर डोमेन के लिए एक टीसीपी/इंटरनेट प्रोटोकॉल (आमतौर पर कूटलेखन) कनेक्शन का उपयोग करने के लिए;
 * प्रति टीसीपी / आईपी कनेक्शन में एक या एक से अधिक द्विदिश धाराओं का उपयोग करने के लिए जिसमें एचओएलबी (हेड-ऑफ-लाइन ब्लॉकिंग) की समस्या को हल करने के लिए HTTP अनुरोधों और प्रतिक्रियाओं को तोड़ दिया जाता है और छोटे पैकेटों में प्रेषित किया जाता है।
 * जब भी नया डेटा उपलब्ध हो, सर्वर एप्लिकेशन को ग्राहकों को डेटा भेजने की अनुमति देने के लिए एक पुश क्षमता जोड़ने के लिए (ग्राहकों को मतदान (कंप्यूटर विज्ञान) विधियों का उपयोग करके सर्वर से समय-समय पर नए डेटा का अनुरोध करने के लिए मजबूर किए बिना)।

एचटीटीपी/3 टीसीपी/आईपी कनेक्शन के बजाय क्विक + यूडीपी ट्रांसपोर्ट प्रोटोकॉल का उपयोग करने के लिए पिछले एचटीटीपी/2 का एक संशोधन है, संचार की औसत गति में थोड़ा सुधार करने और टीसीपी/आईपी कनेक्शन की सामयिक (बहुत दुर्लभ) समस्या से बचने के लिए टीसीपी भीड़ नियंत्रण जो अपनी सभी धाराओं के डेटा प्रवाह को अस्थायी रूप से ब्लॉक या धीमा कर सकता है ('हेड ऑफ लाइन ब्लॉकिंग'' का दूसरा रूप)।

इतिहास
हाइपरटेक्स्ट शब्द टेड नेल्सन द्वारा 1965 में Xanadu प्रोजेक्ट में गढ़ा गया था, जो वन्नेवर बुश के 1930 के दशक के माइक्रोफिल्म-आधारित सूचना पुनर्प्राप्ति और प्रबंधन मेमेक्स सिस्टम से प्रेरित था, जिसे उनके 1945 के निबंध ऐज़ वी मे थिंक में वर्णित किया गया था। CERN में टिम बर्नर्स-ली और उनकी टीम को HTML और वेब सर्वर के लिए संबंधित तकनीक और वेब ब्राउज़र नामक क्लाइंट प्रयोक्ता इंटरफ़ेस के साथ मूल HTTP का आविष्कार करने का श्रेय दिया जाता है। बर्नर्स-ली ने अपने अन्य विचार को अपनाने में मदद करने के लिए HTTP को डिज़ाइन किया: वर्ल्डवाइडवेब प्रोजेक्ट, जिसे पहली बार 1989 में प्रस्तावित किया गया था, जिसे अब वर्ल्ड वाइड वेब के रूप में जाना जाता है।

CERN httpd 1990 में लाइव हुआ। उपयोग किए गए प्रोटोकॉल में केवल एक विधि थी, अर्थात् जीईटी, जो एक सर्वर से एक पृष्ठ का अनुरोध करेगी। सर्वर से प्रतिक्रिया हमेशा एक HTML पृष्ठ होती थी। <रेफरी नाम = HTTP/0.9-विनिर्देशन />

HTTP मील के पत्थर संस्करणों का सारांश
एचटीटीपी/0.9
 * 1991 में, HTTP का पहला प्रलेखित आधिकारिक संस्करण एक सादे दस्तावेज़ के रूप में लिखा गया था, जो 700 शब्दों से कम लंबा था, और इस संस्करण को HTTP/0.9 नाम दिया गया था। HTTP/0.9 केवल GET विधि का समर्थन करता है, क्लाइंट को सर्वर से केवल HTML दस्तावेज़ प्राप्त करने की अनुमति देता है, लेकिन किसी अन्य फ़ाइल स्वरूपों या सूचना अपलोड का समर्थन नहीं करता है।

एचटीटीपी/1.0-ड्राफ्ट
 * 1992 के बाद से, इसके अगले पूर्ण संस्करण के लिए मूल प्रोटोकॉल के विकास को निर्दिष्ट करने के लिए एक नया दस्तावेज़ लिखा गया था। यह 0.9 संस्करण की सरल अनुरोध विधि और क्लाइंट HTTP संस्करण को शामिल करने वाले पूर्ण GET अनुरोध दोनों का समर्थन करता है। यह कई अनौपचारिक HTTP/1.0 ड्राफ्ट में से पहला था जो HTTP/1.0 पर अंतिम कार्य से पहले था।

W3C HTTP वर्किंग ग्रुप
 * यह तय करने के बाद कि HTTP प्रोटोकॉल की नई विशेषताओं की आवश्यकता थी और उन्हें टिप्पणियों के लिए आधिकारिक अनुरोध के रूप में पूरी तरह से प्रलेखित किया जाना था, 1995 की शुरुआत में मानकीकरण के उद्देश्य से HTTP वर्किंग ग्रुप (HTTP WG, डेव रैगेट के नेतृत्व में) का गठन किया गया था और विस्तारित संचालन, विस्तारित बातचीत, समृद्ध मेटा-सूचना के साथ प्रोटोकॉल का विस्तार करें, एक सुरक्षा प्रोटोकॉल से जुड़ा हुआ है जो अतिरिक्त तरीकों और HTTP हेडर फ़ील्ड की सूची जोड़कर अधिक कुशल हो गया है।
 * HTTP WG ने 1995 के भीतर HTTP/1.0 और HTTP/1.1 के रूप में प्रोटोकॉल के नए संस्करणों को संशोधित और प्रकाशित करने की योजना बनाई, लेकिन, कई संशोधनों के कारण, यह समयरेखा एक वर्ष से अधिक चली।
 * एचटीटीपी डब्ल्यूजी ने एचटीटीपी-एनजी (एचटीटीपी नेक्स्ट जेनरेशन) नामक एचटीटीपी के भविष्य के संस्करण को निर्दिष्ट करने की भी योजना बनाई है, जो प्रदर्शन, कम विलंबता प्रतिक्रियाओं आदि से संबंधित पिछले संस्करणों की सभी शेष समस्याओं को हल कर देगा, लेकिन यह काम केवल शुरू हुआ कुछ साल बाद और यह कभी पूरा नहीं हुआ।

एचटीटीपी/1.0
 * मई 1996 में, पूर्व-मानक HTTP/1.0-ड्राफ्ट के रूप में पिछले 4 वर्षों में जो उपयोग किया गया था, उसके अंतिम HTTP/1.0 संशोधन के रूप में प्रकाशित किया गया था जो पहले से ही कई वेब ब्राउज़र और वेब सर्वर द्वारा उपयोग किया गया था।
 * 1996 की शुरुआत में डेवलपर्स ने आगामी HTTP/1.1 विनिर्देशों के ड्राफ्ट का उपयोग करके अपने उत्पादों में HTTP/1.0 प्रोटोकॉल के अनौपचारिक विस्तार (यानी कनेक्शन को जीवित रखना, आदि) को शामिल करना शुरू कर दिया। एचटीटीपी/1.1
 * 1996 की शुरुआत से, प्रमुख वेब ब्राउज़र और वेब सर्वर डेवलपर्स ने भी पूर्व-मानक HTTP/1.1 ड्राफ्ट विनिर्देशों द्वारा निर्दिष्ट नई सुविधाओं को लागू करना शुरू कर दिया। ब्राउज़रों और सर्वरों के नए संस्करणों को एंड-यूज़र अपनाने की गति तेज़ थी। मार्च 1996 में, एक वेब होस्टिंग कंपनी ने बताया कि इंटरनेट पर उपयोग में आने वाले 40% से अधिक ब्राउज़रों ने वर्चुअल होस्टिंग को सक्षम करने के लिए नए HTTP/1.1 हेडर होस्ट का उपयोग किया। उसी वेब होस्टिंग कंपनी ने बताया कि जून 1996 तक, उनके सर्वर तक पहुँचने वाले सभी ब्राउज़रों में से 65% पूर्व-मानक HTTP/1.1 अनुरूप थे।
 * जनवरी 1997 में, आधिकारिक तौर पर HTTP/1.1 विनिर्देशों के रूप में जारी किया गया था।
 * जून 1999 में, पिछले (अप्रचलित) HTTP/1.1 विनिर्देशों के आधार पर सभी सुधारों और अद्यतनों को शामिल करने के लिए जारी किया गया था।


 * W3C HTTP-NG वर्किंग ग्रुप
 * पिछले एचटीटीपी वर्किंग ग्रुप की 1995 की पुरानी योजना को फिर से शुरू करते हुए, 1997 में एचटीटीपी-एनजी (एचटीटीपी न्यू जनरेशन) नामक एक नया एचटीटीपी प्रोटोकॉल विकसित करने के लिए एक एचटीटीपी-एनजी वर्किंग ग्रुप बनाया गया था। एक एकल टीसीपी/आईपी कनेक्शन के अंदर एचटीटीपी लेनदेन के बहुसंकेतन का उपयोग करने के लिए नए प्रोटोकॉल के लिए कुछ प्रस्ताव/ड्राफ्ट तैयार किए गए थे, लेकिन 1999 में, समूह ने आईईटीएफ को तकनीकी समस्याओं को पास करते हुए अपनी गतिविधि बंद कर दी।

आईईटीएफ एचटीटीपी वर्किंग ग्रुप फिर से शुरू हुआ
 * 2007 में, IETF HTTP Working Group (HTTP WG bis या HTTPbis) को पहले पिछले HTTP/1.1 विनिर्देशों को संशोधित करने और स्पष्ट करने के लिए और दूसरा भविष्य के HTTP/2 विनिर्देशों को लिखने और परिष्कृत करने के लिए फिर से शुरू किया गया था ( नाम httpbis)।


 * SPDY : Google द्वारा विकसित एक अनौपचारिक HTTP प्रोटोकॉल
 * 2009 में, Google, एक निजी कंपनी, ने घोषणा की कि उसने SPDY नामक एक नए HTTP बाइनरी प्रोटोकॉल का विकास और परीक्षण किया है। निहित उद्देश्य वेब ट्रैफ़िक को बहुत तेज़ करना था (विशेष रूप से भविष्य के वेब ब्राउज़र और उसके सर्वर के बीच)।
 * एसपीडीवाई वास्तव में कई परीक्षणों में एचटीटीपी/1.1 की तुलना में बहुत तेज था और इसलिए इसे क्रोमियम (वेब ​​​​ब्राउज़र) और फिर अन्य प्रमुख वेब ब्राउज़रों द्वारा जल्दी से अपनाया गया था।
 * HTTP का एक नया संस्करण विकसित करने के लिए क्या करना है, इसके बारे में कुछ महीनों के बाद, इसे SPDY से प्राप्त करने का निर्णय लिया गया। "Since HTTP/0.9 did not support header fields in a request, there is no mechanism for it to support name-based virtual hosts (selection of resource by inspection of the Host header field). Any server that implements name-based virtual hosts ought to disable support for HTTP/0.9. Most requests that appear to be HTTP/0.9 are, in fact, badly constructed HTTP/1.x requests caused by a client failing to properly encode the request-target."
 * 2016 के बाद से कई उत्पाद प्रबंधकों और उपयोगकर्ता एजेंटों (ब्राउज़र, आदि) और वेब सर्वर के डेवलपर्स ने मुख्य रूप से निम्नलिखित कारणों से HTTP/0.9 प्रोटोकॉल के समर्थन को धीरे-धीरे कम करने और खारिज करने की योजना बनाना शुरू कर दिया है:
 * यह इतना सरल है कि एक RFC दस्तावेज़ कभी नहीं लिखा गया था (केवल मूल दस्तावेज़ है);
 * इसमें कोई एचटीटीपी हेडर नहीं है और कई अन्य विशेषताओं का अभाव है जो आजकल न्यूनतम सुरक्षा कारणों से आवश्यक हैं;
 * यह 1999..2000 (HTTP/1.0 और HTTP/1.1 के कारण) से व्यापक नहीं हुआ है और आमतौर पर केवल कुछ बहुत पुराने नेटवर्क हार्डवेयर, यानी राउटर (कंप्यूटिंग), आदि द्वारा उपयोग किया जाता है।

एचटीटीपी/3
 * 2020 में, पहला ड्राफ्ट HTTP/3 प्रकाशित किया गया और प्रमुख वेब ब्राउज़र और वेब सर्वर ने इसे अपनाना शुरू कर दिया।
 * 6 जून 2022 को आईईटीएफ ने एचटीटीपी/3 को मानकीकृत किया.

2022 में अपडेट और रीफैक्टरिंग
 * जून 2022 में, RFC का एक बैच प्रकाशित किया गया था, जिसमें पिछले कई दस्तावेज़ों को हटा दिया गया था और कुछ छोटे बदलावों को पेश किया गया था और एक अलग दस्तावेज़ में HTTP सिमेंटिक विवरण की रीफैक्टरिंग की गई थी।
 * , HTTP शब्दार्थ
 * , HTTP कैशिंग
 * , एचटीटीपी/1.1
 * , एचटीटीपी/2
 * , HTTP/3 (उपरोक्त अनुभाग भी देखें)
 * , क्यूपैक: एचटीटीपी/3 के लिए फील्ड कंप्रेशन
 * , HTTP के लिए एक्स्टेंसिबल प्राथमिकता योजना

HTTP डेटा एक्सचेंज
HTTP एक स्टेटलेस प्रोटोकॉल एप्लिकेशन-लेवल प्रोटोकॉल है और इसे क्लाइंट और सर्वर के बीच डेटा के आदान-प्रदान के लिए एक विश्वसनीय नेटवर्क ट्रांसपोर्ट कनेक्शन की आवश्यकता होती है। एचटीटीपी कार्यान्वयन में, ट्रांसमिशन कंट्रोल प्रोटोकॉल | टीसीपी/आईपी कनेक्शन का उपयोग प्रसिद्ध टीसीपी और यूडीपी पोर्ट्स का उपयोग करके किया जाता है (आमतौर पर टीसीपी पोर्ट अगर कनेक्शन अनएन्क्रिप्टेड है या पोर्ट 443 अगर कनेक्शन एन्क्रिप्ट किया गया है, तो टीसीपी और यूडीपी पोर्ट नंबरों की सूची भी देखें)। HTTP/2 में, एक TCP/IP कनेक्शन और कई प्रोटोकॉल चैनल का उपयोग किया जाता है। HTTP/3 में, यूडीपी पर एप्लिकेशन ट्रांसपोर्ट प्रोटोकॉल क्विक का उपयोग किया जाता है।

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

लगातार कनेक्शन
HTTP/0.9 में, सर्वर प्रतिक्रिया भेजे जाने के बाद टीसीपी/आईपी कनेक्शन हमेशा बंद रहता है, इसलिए यह कभी भी स्थायी नहीं होता है।

HTTP/1.0 में, जैसा कि RFC 1945 में कहा गया है, प्रतिक्रिया भेजे जाने के बाद TCP/IP कनेक्शन को हमेशा सर्वर द्वारा बंद कर दिया जाना चाहिए। HTTP/1.1 में एक कीप-अलाइव-मैकेनिज्म आधिकारिक तौर पर पेश किया गया था ताकि एक से अधिक अनुरोध/प्रतिक्रिया के लिए एक कनेक्शन का पुन: उपयोग किया जा सके। इस तरह के लगातार कनेक्शन अनुरोध विलंबता (इंजीनियरिंग) को स्पष्ट रूप से कम कर देते हैं क्योंकि क्लाइंट को ट्रांसमिशन कंट्रोल प्रोटोकॉल # कनेक्शन स्थापना | टीसीपी 3-वे-हैंडशेक कनेक्शन के पहले अनुरोध के बाद फिर से बातचीत करने की आवश्यकता नहीं होती है। एक और सकारात्मक पक्ष प्रभाव यह है कि, सामान्य तौर पर, टीसीपी के टीसीपी कंजेशन कंट्रोल # स्लो स्टार्ट | स्लो-स्टार्ट-मैकेनिज्म के कारण कनेक्शन समय के साथ तेज हो जाता है।

HTTP / 1.1 ने HTTP पाइपलाइनिंग को भी जोड़ा ताकि ग्राहकों को प्रत्येक प्रतिक्रिया की प्रतीक्षा करने से पहले कई अनुरोध भेजने की अनुमति देकर लगातार कनेक्शन का उपयोग करते समय अंतराल को कम किया जा सके। इस अनुकूलन को कभी भी वास्तव में सुरक्षित नहीं माना गया क्योंकि कुछ वेब सर्वर और कई प्रॉक्सी सर्वर, विशेष रूप से क्लाइंट और सर्वर के बीच इंटरनेट/इंट्रानेट में रखे गए पारदर्शी प्रॉक्सी सर्वर, पाइपलाइन किए गए अनुरोधों को ठीक से संभाल नहीं पाए (उन्होंने दूसरों को छोड़कर केवल पहला अनुरोध पूरा किया, उन्होंने बंद कर दिया कनेक्शन क्योंकि उन्होंने पहले अनुरोध के बाद अधिक डेटा देखा था या कुछ प्रॉक्सी ने प्रतिक्रियाओं को आदेश से बाहर कर दिया था)। इसके अलावा केवल HEAD और कुछ GET अनुरोध (अर्थात वास्तविक फ़ाइल अनुरोधों तक सीमित और कमांड के रूप में उपयोग किए जाने वाले क्वेरी स्ट्रिंग के बिना URL के साथ) को #Safe विधियों और #Idempotent विधियों मोड में पाइपलाइन किया जा सकता है। पाइपलाइनिंग को सक्षम करके शुरू की गई समस्याओं से कई वर्षों तक संघर्ष करने के बाद, HTTP/2 को अपनाने की घोषणा के कारण इस सुविधा को पहले अक्षम कर दिया गया और फिर अधिकांश ब्राउज़रों से भी हटा दिया गया।

HTTP/2 ने एक ही टीसीपी/आईपी कनेक्शन के माध्यम से कई समवर्ती अनुरोधों/प्रतिक्रियाओं को मल्टीप्लेक्स करके लगातार कनेक्शन के उपयोग को बढ़ाया।

एचटीटीपी/3 टीसीपी/आईपी कनेक्शन का उपयोग नहीं करता है लेकिन क्विक + यूडीपी (यह भी देखें: #तकनीकी अवलोकन)।

सामग्री पुनर्प्राप्ति अनुकूलन

 * एचटीटीपी/0.9
 * एक अनुरोधित संसाधन हमेशा पूरी तरह से भेजा गया था।


 * एचटीटीपी/1.0
 * सशर्त जीईटी अनुरोधों को अनुमति देने के लिए क्लाइंट द्वारा कैश किए गए संसाधनों को प्रबंधित करने के लिए HTTP / 1.0 हेडर जोड़े गए; व्यवहार में एक सर्वर को अनुरोधित संसाधन की पूरी सामग्री को केवल तभी वापस करना होता है जब उसका अंतिम संशोधित समय क्लाइंट द्वारा ज्ञात नहीं होता है या यदि यह GET अनुरोध के अंतिम पूर्ण प्रतिक्रिया के बाद बदल जाता है। इन शीर्षलेखों में से एक, सामग्री-एन्कोडिंग को यह निर्दिष्ट करने के लिए जोड़ा गया था कि संसाधन की लौटाई गई सामग्री HTTP संपीड़न थी या नहीं।
 * यदि किसी संसाधन की सामग्री की कुल लंबाई पहले से ज्ञात नहीं थी (अर्थात क्योंकि यह गतिशील रूप से उत्पन्न हुई थी, आदि) तो हेडर  HTTP हेडर में मौजूद नहीं था और क्लाइंट ने माना कि जब सर्वर ने कनेक्शन बंद कर दिया, तो सामग्री पूरी तरह से भेज दी गई थी। यह तंत्र एक संसाधन हस्तांतरण के बीच सफलतापूर्वक पूर्ण और एक बाधित (एक सर्वर / नेटवर्क त्रुटि या कुछ और के कारण) के बीच अंतर नहीं कर सका।


 * एचटीटीपी/1.1
 * HTTP/1.1 पेश किया गया:
 * नए हेडर कैश्ड संसाधनों की सशर्त पुनर्प्राप्ति को बेहतर ढंग से प्रबंधित करने के लिए।
 * खंडित स्थानांतरण एन्कोडिंग सामग्री को टुकड़ों में प्रवाहित करने की अनुमति देने के लिए विश्वसनीय रूप से भेजने के लिए भले ही सर्वर को इसकी लंबाई पहले से पता न हो (अर्थात क्योंकि यह गतिशील रूप से उत्पन्न होता है, आदि)।
 * * बाइट सर्विंग, जहां एक ग्राहक संसाधन के केवल एक या एक से अधिक भागों (बाइट्स की रेंज) का अनुरोध कर सकता है (यानी पहला भाग, बीच में एक हिस्सा या पूरी सामग्री के अंत में, आदि) और सर्वर आमतौर पर केवल अनुरोधित भाग भेजता है। यह एक बाधित डाउनलोड को फिर से शुरू करने के लिए उपयोगी होता है (जब फ़ाइल वास्तव में बड़ी होती है), जब किसी सामग्री का केवल एक हिस्सा दिखाना होता है या ब्राउज़र द्वारा पहले से ही दिखाई देने वाले हिस्से में गतिशील रूप से जोड़ा जाता है (यानी केवल पहली या निम्नलिखित एन टिप्पणियाँ) एक वेब पेज) खाली समय, बैंडविड्थ और सिस्टम संसाधनों आदि के लिए।


 * एचटीटीपी/2, एचटीटीपी/3
 * एचटीटीपी/2 और एचटीटीपी/3 दोनों में एचटीटीपी/1.1 की उपरोक्त विशेषताएं रखी गई हैं।

HTTP प्रमाणीकरण
HTTP कई प्रमाणीकरण योजनाएँ प्रदान करता है जैसे कि बुनियादी पहुँच प्रमाणीकरण और डाइजेस्ट एक्सेस प्रमाणीकरण जो एक चुनौती-प्रतिक्रिया तंत्र के माध्यम से संचालित होता है जिससे सर्वर अनुरोधित सामग्री की सेवा करने से पहले एक चुनौती की पहचान करता है और उसे जारी करता है।

HTTP चुनौती-प्रतिक्रिया प्रमाणीकरण योजनाओं के एक विस्तृत सेट के माध्यम से अभिगम नियंत्रण और प्रमाणीकरण के लिए एक सामान्य ढांचा प्रदान करता है, जिसका उपयोग सर्वर द्वारा क्लाइंट अनुरोध को चुनौती देने के लिए और क्लाइंट द्वारा प्रमाणीकरण जानकारी प्रदान करने के लिए किया जा सकता है। ऊपर वर्णित प्रमाणीकरण तंत्र HTTP प्रोटोकॉल से संबंधित हैं और क्लाइंट और सर्वर HTTP सॉफ़्टवेयर द्वारा प्रबंधित किए जाते हैं (यदि क्लाइंट को एक या अधिक वेब संसाधनों तक क्लाइंट पहुंच की अनुमति देने से पहले प्रमाणीकरण की आवश्यकता के लिए कॉन्फ़िगर किया गया है), और #HTTP एप्लिकेशन सत्र का उपयोग करने वाले वेब एप्लिकेशन द्वारा नहीं।

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

HTTP आवेदन सत्र
HTTP एक स्टेटलेस प्रोटोकॉल है। एक स्टेटलेस प्रोटोकॉल के लिए वेब सर्वर को एकाधिक अनुरोधों की अवधि के लिए प्रत्येक उपयोगकर्ता के बारे में जानकारी या स्थिति बनाए रखने की आवश्यकता नहीं होती है।

कुछ वेब एप्लिकेशन को उपयोगकर्ता सत्रों को प्रबंधित करने की आवश्यकता होती है, इसलिए वे उदाहरण के लिए HTTP कुकीज़ का उपयोग करके राज्यों या सत्र (कंप्यूटर विज्ञान) को लागू करते हैं या छिपे हुए चर (कंप्यूटर विज्ञान) प्रपत्र (वेब) के भीतर हैं।

एप्लिकेशन उपयोगकर्ता सत्र प्रारंभ करने के लिए, वेब एप्लिकेशन लॉग इन करें के माध्यम से एक इंटरैक्टिव प्रमाणीकरण किया जाना चाहिए। उपयोगकर्ता सत्र को रोकने के लिए उपयोगकर्ता द्वारा लॉग आउट ऑपरेशन का अनुरोध किया जाना चाहिए। इस प्रकार के संचालन #HTTP प्रमाणीकरण का उपयोग नहीं करते हैं बल्कि एक कस्टम प्रबंधित वेब अनुप्रयोग प्रमाणीकरण का उपयोग करते हैं।

HTTP/1.1 अनुरोध संदेश
अनुरोध संदेश क्लाइंट द्वारा लक्षित सर्वर को भेजे जाते हैं।

अनुरोध सिंटैक्स
क्लाइंट सर्वर को अनुरोध संदेश भेजता है, जिसमें निम्न शामिल हैं: प्राप्त करें /छवियां/logo.png एचटीटीपी/1.1 होस्ट: www.example.com स्वीकार-भाषा: en
 * एक अनुरोध पंक्ति, जिसमें केस-संवेदी अनुरोध विधि, एक स्थान (विराम चिह्न), अनुरोधित URL, अन्य स्थान, प्रोटोकॉल संस्करण, एक कैरिज रिटर्न और एक रेखा भरण शामिल है, उदाहरण के लिए:
 * शून्य या अधिक HTTP अनुरोध शीर्षलेख फ़ील्ड (HTTP/1.1 के मामले में कम से कम 1 या अधिक शीर्षलेख), प्रत्येक में केस-असंवेदनशील फ़ील्ड नाम, एक कोलन, वैकल्पिक अग्रणी व्हाइटस्पेस (कंप्यूटर विज्ञान), फ़ील्ड मान, एक वैकल्पिक ट्रेलिंग व्हॉट्सएप और एक कैरिज रिटर्न और एक लाइन फीड के साथ समाप्त होता है, उदा .:
 * एक खाली लाइन, जिसमें कैरिज रिटर्न और लाइन फीड शामिल है;
 * एक वैकल्पिक HTTP संदेश निकाय।

HTTP/1.1 प्रोटोकॉल में, सभी हेडर फ़ील्ड को छोड़कर  वैकल्पिक हैं।

HTTP / 1.0 विनिर्देश से पहले HTTP क्लाइंट के साथ संगतता बनाए रखने के लिए सर्वर द्वारा केवल पथ नाम वाली एक अनुरोध पंक्ति स्वीकार की जाती है.

अनुरोध के तरीके
HTTP तरीकों को परिभाषित करता है (कभी-कभी क्रियाओं के रूप में संदर्भित किया जाता है, लेकिन कहीं भी विनिर्देशन में यह क्रिया का उल्लेख नहीं करता है) पहचाने गए संसाधन पर वांछित क्रिया को इंगित करने के लिए। यह संसाधन क्या दर्शाता है, चाहे पूर्व-मौजूदा डेटा या डेटा जो गतिशील रूप से उत्पन्न होता है, सर्वर के कार्यान्वयन पर निर्भर करता है। अक्सर, संसाधन फ़ाइल या सर्वर पर निष्पादन योग्य के आउटपुट से मेल खाता है। HTTP/1.0 विनिर्देश GET, HEAD और POST विधियों और HTTP / 1.1 विनिर्देश को परिभाषित किया पांच नए तरीके जोड़े: पुट, डिलीट, कनेक्ट, ऑप्शन और ट्रेस। कोई भी क्लाइंट किसी भी विधि का उपयोग कर सकता है और सर्वर को विधियों के किसी भी संयोजन का समर्थन करने के लिए कॉन्फ़िगर किया जा सकता है। यदि कोई विधि किसी मध्यवर्ती के लिए अज्ञात है, तो इसे एक असुरक्षित और आलस्य के रूप में माना जाएगा। परिभाषित किए जा सकने वाले तरीकों की संख्या की कोई सीमा नहीं है, जो मौजूदा बुनियादी ढांचे को तोड़े बिना भविष्य के तरीकों को निर्दिष्ट करने की अनुमति देता है। उदाहरण के लिए, WebDAV ने सात नई विधियों को परिभाषित किया और पैच क्रिया विधि निर्दिष्ट की।

विधि के नाम केस संवेदी होते हैं। यह HTTP शीर्षलेख फ़ील्ड नामों के विपरीत है जो केस-असंवेदनशील हैं।


 * प्राप्त करें: GET विधि अनुरोध करती है कि लक्ष्य संसाधन अपने राज्य का प्रतिनिधित्व स्थानांतरित करे। GET अनुरोधों को केवल डेटा पुनर्प्राप्ति होना चाहिए और इसका कोई अन्य प्रभाव नहीं होना चाहिए। (यह कुछ अन्य एचटीटीपी विधियों के लिए भी सही है।) परिवर्तन किए बिना संसाधनों को पुनः प्राप्त करने के लिए, POST पर GET को प्राथमिकता दी जाती है, क्योंकि वे एक URL के माध्यम से पता योग्यता हो सकते हैं। यह बुकमार्क करने और साझा करने में सक्षम बनाता है और ब्राउज़र कैश के लिए प्रतिक्रिया प्राप्त करता है, जो बैंडविड्थ को बचा सकता है। W3C ने इस भेद पर मार्गदर्शन सिद्धांतों को प्रकाशित किया है, जिसमें कहा गया है, वेब एप्लिकेशन डिज़ाइन को उपरोक्त सिद्धांतों द्वारा सूचित किया जाना चाहिए, लेकिन प्रासंगिक सीमाओं द्वारा भी। नीचे #सुरक्षित तरीके देखें।


 * HEAD: HEAD विधि अनुरोध करती है कि लक्ष्य संसाधन अपने राज्य का एक प्रतिनिधित्व स्थानांतरित करता है, जैसा कि GET अनुरोध के लिए होता है, लेकिन प्रतिक्रिया निकाय में संलग्न प्रतिनिधित्व डेटा के बिना। यह प्रतिक्रिया शीर्षलेख में प्रतिनिधित्व मेटाडेटा को पुनर्प्राप्त करने के लिए उपयोगी है, पूरे प्रतिनिधित्व को स्थानांतरित किए बिना। इसके उपयोगों में यह जांचना शामिल है कि HTTP स्थिति कोड के माध्यम से कोई पृष्ठ उपलब्ध है या नहीं और कम्प्यूटर फाइल के आकार का शीघ्रता से पता लगाना.


 * POST: POST (HTTP) अनुरोध करता है कि लक्ष्य संसाधन लक्ष्य संसाधन के शब्दार्थ के अनुसार अनुरोध में संलग्न प्रतिनिधित्व को संसाधित करता है। उदाहरण के लिए, इसका उपयोग इंटरनेट मंच पर संदेश पोस्ट करने, मेलिंग सूची की सदस्यता लेने या ऑनलाइन खरीदारी लेनदेन को पूरा करने के लिए किया जाता है।


 * पुट: पुट विधि अनुरोध करती है कि लक्ष्य संसाधन अनुरोध में संलग्न प्रतिनिधित्व द्वारा परिभाषित राज्य के साथ अपने राज्य को बनाएं या अपडेट करें। POST से एक अंतर यह है कि क्लाइंट सर्वर पर लक्ष्य स्थान निर्दिष्ट करता है।


 * DELETE: DELETE विधि अनुरोध करती है कि लक्ष्य संसाधन अपनी स्थिति को हटा दें।


 * कनेक्ट: कनेक्ट विधि अनुरोध करती है कि मध्यस्थ अनुरोध लक्ष्य द्वारा पहचाने गए मूल सर्वर के लिए एक टनलिंग प्रोटोकॉल | टीसीपी / आईपी सुरंग स्थापित करता है। इसका उपयोग अक्सर ट्रांसपोर्ट लेयर सिक्योरिटी के साथ एक या एक से अधिक HTTP प्रॉक्सी के माध्यम से कनेक्शन सुरक्षित करने के लिए किया जाता है। HTTP टनल#HTTP कनेक्ट विधि देखें।


 * विकल्प: विकल्प विधि अनुरोध करती है कि लक्ष्य संसाधन HTTP विधियों को स्थानांतरित करता है जो इसका समर्थन करता है। इसका उपयोग किसी विशिष्ट संसाधन के बजाय '*' अनुरोध करके वेब सर्वर की कार्यक्षमता की जांच करने के लिए किया जा सकता है।


 * TRACE: TRACE विधि अनुरोध करती है कि लक्ष्य संसाधन प्रतिक्रिया निकाय में प्राप्त अनुरोध को स्थानांतरित कर दे। इस तरह एक ग्राहक देख सकता है कि बिचौलियों द्वारा क्या (यदि कोई हो) परिवर्तन या परिवर्धन किया गया है।

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

सुरक्षित तरीके
एक अनुरोध विधि सुरक्षित है यदि उस विधि के अनुरोध का सर्वर पर कोई प्रभाव नहीं पड़ता है। GET, HEAD, OPTIONS और TRACE विधियों को सुरक्षित के रूप में परिभाषित किया गया है। दूसरे शब्दों में, कमांड-क्वेरी पृथक्करण|केवल-पढ़ने के लिए सुरक्षित विधियों का इरादा है। हालांकि वे साइड इफेक्ट (कंप्यूटर विज्ञान) को बाहर नहीं करते हैं, जैसे कि सर्वर लॉग में अनुरोध जानकारी को जोड़ना या वेब बैनर को चार्ज करना, क्योंकि परिभाषा के अनुसार क्लाइंट द्वारा उनका अनुरोध नहीं किया जाता है।

इसके विपरीत, POST, PUT, DELETE, CONNECT, और PATCH के तरीके सुरक्षित नहीं हैं। वे सर्वर की स्थिति को संशोधित कर सकते हैं या ईमेल भेजने जैसे अन्य प्रभाव डाल सकते हैं। इस तरह के तरीके आमतौर पर इंटरनेट बॉट या वेब क्रॉलर के अनुरूप नहीं होते हैं; कुछ जो अनुरूप नहीं हैं, वे संदर्भ या परिणामों की परवाह किए बिना अनुरोध करते हैं।

जीईटी अनुरोधों की निर्धारित सुरक्षा के बावजूद, व्यवहार में सर्वर द्वारा उनकी हैंडलिंग किसी भी तरह से तकनीकी रूप से सीमित नहीं है। लापरवाह या जानबूझकर अनियमित प्रोग्रामिंग जीईटी अनुरोधों को सर्वर पर गैर-तुच्छ परिवर्तन करने की अनुमति दे सकती है। वेब कैशिंग, खोज इंजन और अन्य स्वचालित एजेंटों द्वारा सर्वर पर अनपेक्षित परिवर्तन करने पर उत्पन्न होने वाली समस्याओं के कारण इसे हतोत्साहित किया जाता है। उदाहरण के लिए, एक वेबसाइट https://example.com/article/1234/delete जैसे किसी URL के माध्यम से किसी संसाधन को हटाने की अनुमति दे सकती है, जो, यदि मनमाने ढंग से प्राप्त किया जाता है, यहां तक ​​कि GET का उपयोग करके, बस हटा दिया जाएगा लेख। एक ठीक से कोडित वेबसाइट को इस क्रिया के लिए DELETE या POST विधि की आवश्यकता होगी, जो गैर-दुर्भावनापूर्ण बॉट्स नहीं करेंगे।

अभ्यास में ऐसा होने का एक उदाहरण अल्पकालिक Google वेब त्वरक बीटा परीक्षण के दौरान था, जो एक उपयोगकर्ता द्वारा देखे जा रहे पृष्ठ पर मनमाना URL प्रीफ़ेच करता था, जिससे रिकॉर्ड स्वचालित रूप से बदल जाते थे या सामूहिक रूप से हटा दिए जाते थे। व्यापक आलोचना के बाद, बीटा को इसकी पहली रिलीज के कुछ सप्ताह बाद ही निलंबित कर दिया गया था।

निष्काम तरीके
एक अनुरोध विधि उदासीन है यदि उस विधि के साथ कई समान अनुरोधों का एक ही अनुरोध के समान प्रभाव होता है। PUT और DELETE के तरीके, और सुरक्षित तरीकों को idempotent के रूप में परिभाषित किया गया है। सुरक्षित तरीके तुच्छ रूप से बेकार हैं, क्योंकि उनका इरादा सर्वर पर किसी भी तरह का प्रभाव नहीं डालना है; इस बीच, PUT और DELETE विधियाँ उदासीन हैं क्योंकि क्रमिक समान अनुरोधों को अनदेखा कर दिया जाएगा। उदाहरण के लिए, एक वेबसाइट उपयोगकर्ता के रिकॉर्ड किए गए ईमेल पते को संशोधित करने के लिए एक PUT समापन बिंदु सेट कर सकती है। यदि यह समापन बिंदु सही ढंग से कॉन्फ़िगर किया गया है, तो कोई भी अनुरोध जो उपयोगकर्ता के ईमेल पते को उसी ईमेल पते में बदलने के लिए कहता है जो पहले से ही रिकॉर्ड किया गया है—उदा. एक सफल अनुरोध के बाद डुप्लिकेट अनुरोध—कोई प्रभाव नहीं पड़ेगा। इसी प्रकार, किसी निश्चित उपयोगकर्ता को हटाने के अनुरोध का कोई प्रभाव नहीं पड़ेगा यदि वह उपयोगकर्ता पहले ही हटा दिया गया हो।

इसके विपरीत, विधियाँ POST, CONNECT, और PATCH आवश्यक रूप से निष्क्रिय नहीं हैं, और इसलिए एक समान POST अनुरोध को कई बार भेजने से सर्वर की स्थिति में और बदलाव हो सकता है या आगे के प्रभाव हो सकते हैं, जैसे कि कई ईमेल भेजना। कुछ मामलों में यह वांछित प्रभाव है, लेकिन अन्य मामलों में यह आकस्मिक रूप से हो सकता है। एक उपयोगकर्ता, उदाहरण के लिए, अनजाने में एक बटन को फिर से क्लिक करके कई POST अनुरोध भेज सकता है यदि उन्हें स्पष्ट प्रतिक्रिया नहीं दी गई थी कि पहला क्लिक संसाधित किया जा रहा था। जबकि वेब ब्राउज़र कुछ मामलों में उपयोगकर्ताओं को चेतावनी देने के लिए अलर्ट डायलॉग बॉक्स दिखा सकते हैं, जहां पृष्ठ को फिर से लोड करने से POST अनुरोध फिर से सबमिट हो सकता है, यह आम तौर पर उन मामलों को संभालने के लिए वेब एप्लिकेशन पर निर्भर करता है जहां POST अनुरोध एक से अधिक बार सबमिट नहीं किया जाना चाहिए।

ध्यान दें कि कोई विधि निष्क्रिय है या नहीं, प्रोटोकॉल या वेब सर्वर द्वारा लागू नहीं किया जाता है। एक वेब एप्लिकेशन लिखना पूरी तरह से संभव है जिसमें (उदाहरण के लिए) एक डेटाबेस इन्सर्ट या अन्य नॉन-इम्पोटेंट एक्शन को GET या अन्य अनुरोध द्वारा ट्रिगर किया जाता है। सिफारिशों के विरुद्ध ऐसा करने के लिए, हालांकि, अवांछित परिणाम हो सकते हैं, यदि कोई उपयोगकर्ता एजेंट मानता है कि एक ही अनुरोध को दोहराना सुरक्षित है, जबकि ऐसा नहीं है।

प्राप्य तरीके
एक अनुरोध विधि कैश करने योग्य है यदि उस विधि के अनुरोधों के जवाब भविष्य में पुन: उपयोग के लिए संग्रहीत किए जा सकते हैं। तरीकों GET, HEAD और POST को कैश करने योग्य के रूप में परिभाषित किया गया है।

इसके विपरीत, PUT, DELETE, CONNECT, OPTIONS, TRACE, और PATCH के तरीके उपलब्ध नहीं हैं।

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

HTTP/1.1 प्रतिक्रिया संदेश
एक प्रतिक्रिया संदेश एक सर्वर द्वारा क्लाइंट को उसके पूर्व अनुरोध संदेश के उत्तर के रूप में भेजा जाता है।

प्रतिक्रिया सिंटैक्स
एक सर्वर क्लाइंट को प्रतिक्रिया संदेश भेजता है, जिसमें शामिल हैं:

HTTP/1.1 200 ठीक है सामग्री-प्रकार: पाठ/एचटीएमएल
 * एक स्टेटस लाइन, जिसमें प्रोटोकॉल संस्करण, एक स्पेस (विराम चिह्न), HTTP स्टेटस कोड की सूची, एक अन्य स्पेस, एक संभावित खाली कारण वाक्यांश, एक कैरिज रिटर्न और एक लाइन फीड शामिल है, उदाहरण के लिए:
 * शून्य या अधिक HTTP प्रतिक्रिया शीर्षलेख फ़ील्ड, प्रत्येक में केस-असंवेदनशील फ़ील्ड नाम, एक कोलन, वैकल्पिक अग्रणी व्हाइटस्पेस (कंप्यूटर विज्ञान), फ़ील्ड मान, एक वैकल्पिक अनुगामी व्हाइटस्पेस और एक कैरिज रिटर्न और एक लाइन फीड के साथ समाप्त होता है, उदाहरण के लिए :
 * एक खाली लाइन, जिसमें कैरिज रिटर्न और लाइन फीड शामिल है;
 * एक वैकल्पिक HTTP संदेश निकाय।

प्रतिक्रिया स्थिति कोड
HTTP/1.0 में और उसके बाद से, HTTP प्रतिक्रिया की पहली पंक्ति को स्थिति रेखा कहा जाता है और इसमें एक संख्यात्मक स्थिति कोड (जैसे HTTP 404) और एक शाब्दिक कारण वाक्यांश (जैसे नहीं मिला) शामिल होता है। प्रतिक्रिया स्थिति कोड एक तीन अंकों का पूर्णांक कोड है जो क्लाइंट के संबंधित अनुरोध को समझने और संतुष्ट करने के सर्वर के प्रयास के परिणाम का प्रतिनिधित्व करता है। जिस तरह से ग्राहक प्रतिक्रिया को संभालता है वह मुख्य रूप से स्थिति कोड पर निर्भर करता है, और दूसरा प्रतिक्रिया हेडर फ़ील्ड पर। ग्राहक सभी पंजीकृत स्थिति कोड को नहीं समझ सकते हैं, लेकिन उन्हें अपनी कक्षा (स्थिति कोड के पहले अंक द्वारा दी गई) को समझना चाहिए और उस वर्ग के x00 स्थिति कोड के बराबर होने के लिए एक गैर-मान्यता प्राप्त स्थिति कोड का इलाज करना चाहिए।

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

स्थिति कोड का पहला अंक इसकी कक्षा को परिभाषित करता है:


 * (सूचनात्मक): अनुरोध प्राप्त हुआ, प्रक्रिया जारी है।


 * (सफल): अनुरोध सफलतापूर्वक प्राप्त हुआ, समझा गया और स्वीकार किया गया।


 * (पुनर्निर्देशन): अनुरोध को पूरा करने के लिए आगे की कार्रवाई करने की आवश्यकता है।


 * (क्लाइंट त्रुटि): अनुरोध में खराब सिंटैक्स है या इसे पूरा नहीं किया जा सकता है।


 * (सर्वर त्रुटि): सर्वर स्पष्ट रूप से मान्य अनुरोध को पूरा करने में विफल रहा।

प्रतिक्रिया शीर्षलेख फ़ील्ड
प्रतिक्रिया शीर्षलेख फ़ील्ड सर्वर को प्रतिक्रिया संशोधक के रूप में कार्य करते हुए स्थिति रेखा से परे अतिरिक्त जानकारी पास करने की अनुमति देती है। वे सर्वर के बारे में या लक्षित संसाधन या संबंधित संसाधनों तक और पहुंच के बारे में जानकारी देते हैं।

प्रत्येक प्रतिक्रिया हेडर फ़ील्ड का एक परिभाषित अर्थ होता है जिसे अनुरोध विधि या प्रतिक्रिया स्थिति कोड के शब्दार्थ द्वारा और अधिक परिष्कृत किया जा सकता है।

HTTP/1.1 अनुरोध/प्रतिक्रिया लेनदेन का उदाहरण
नीचे एक HTTP/1.1 क्लाइंट और एक HTTP/1.1 सर्वर के बीच एक नमूना HTTP लेनदेन है जो example.com|www.example.com, पोर्ट 80 पर चल रहा है।

क्लाइंट अनुरोध
<वाक्यविन्यास प्रकाश लैंग = http> प्राप्त / HTTP / 1.1 होस्ट: www.example.com उपयोगकर्ता-एजेंट: मोज़िला/5.0 स्वीकार करें: पाठ/एचटीएमएल, आवेदन/एक्सएचटीएमएल + एक्सएमएल, आवेदन/एक्सएमएल; क्यू = 0.9, छवि/एवीएफ, छवि/वेबपी, */*; क्यू = 0.8 स्वीकार-भाषा: en-GB,en;q=0.5 स्वीकार-एन्कोडिंग: gzip, deflate, br संबंध: जीवित रखना



एक ग्राहक अनुरोध (अनुरोध पंक्ति के इस मामले में और कुछ शीर्षलेख शामिल हैं जिन्हें केवल  हेडर) के बाद एक खाली लाइन होती है, ताकि अनुरोध लाइन के दोहरे अंत के साथ समाप्त हो, प्रत्येक कैरिज रिटर्न के रूप में और उसके बाद लाइन फीड हो।   e> शीर्ष लेख मान विभिन्न डॉमेन नाम सिस्टम नामों के बीच एक एकल आईपी पता साझा करने के बीच अंतर करता है, जिससे नाम-आधारित वर्चुअल होस्टिंग की अनुमति मिलती है। जबकि HTTP/1.0 में वैकल्पिक है, HTTP/1.1 में यह अनिवार्य है। (ए / (स्लैश) आमतौर पर एक वेबसर्वर डायरेक्टरी इंडेक्स|/index.html फ़ाइल लाएगा यदि कोई है।)

सर्वर प्रतिक्रिया
<वाक्यविन्यास प्रकाश लैंग = http> HTTP/1.1 200 ठीक है दिनांक: सोम, 23 मई 2005 22:38:34 जीएमटी सामग्री-प्रकार: पाठ/एचटीएमएल; वर्णसेट = यूटीएफ -8 सामग्री-लंबाई: 155 अंतिम-संशोधित: बुध, 08 जनवरी 2003 23:11:55 जीएमटी सर्वर: अपाचे/1.3.3.7 (यूनिक्स) (रेड-हैट/लिनक्स) ईटैग: 3f80f-1b6-3e1cb03b स्वीकार-श्रेणियाँ: बाइट्स कनेक्शन: बंद करें

<एचटीएमएल> <सिर> एक उदाहरण पृष्ठ   हैलो वर्ल्ड, यह एक बहुत ही सरल HTML दस्तावेज़ है।  

HTTP ETag (एंटिटी टैग) हेडर फ़ील्ड का उपयोग यह निर्धारित करने के लिए किया जाता है कि अनुरोधित संसाधन का कैश्ड संस्करण सर्वर पर संसाधन के वर्तमान संस्करण के समान है या नहीं।  HTTP संदेश द्वारा बताए गए डेटा के इंटरनेट मीडिया प्रकार को निर्दिष्ट करता है, जबकि   बाइट्स में इसकी लंबाई इंगित करता है। HTTP/1.1 वेबसर्वर फ़ील्ड सेट करके दस्तावेज़ की कुछ बाइट श्रेणियों के अनुरोधों का जवाब देने की अपनी क्षमता प्रकाशित करता है. यह उपयोगी है, अगर ग्राहक को केवल कुछ हिस्से ही चाहिए सर्वर द्वारा भेजे गए संसाधन का, जिसे बाइट सर्विंग कहा जाता है। कब  भेजा जाता है, इसका मतलब है कि वेब सर्वर इस प्रतिक्रिया के हस्तांतरण के अंत के तुरंत बाद ट्रांसमिशन कंट्रोल प्रोटोकॉल कनेक्शन बंद कर देगा।

अधिकांश हेडर लाइन वैकल्पिक हैं लेकिन कुछ अनिवार्य हैं। जब हेडर  एक इकाई निकाय के साथ प्रतिक्रिया में गुम है तो इसे HTTP/1.0 में एक त्रुटि माना जाना चाहिए लेकिन हेडर होने पर HTTP/1.1 में यह त्रुटि नहीं हो सकती है   उपस्थित है। चंक्ड ट्रांसफर एन्कोडिंग सामग्री के अंत को चिह्नित करने के लिए 0 के चंक आकार का उपयोग करता है। HTTP/1.0 के कुछ पुराने कार्यान्वयनों ने हेडर को छोड़ दिया   जब प्रतिक्रिया की शुरुआत में शरीर इकाई की लंबाई ज्ञात नहीं थी और इसलिए क्लाइंट को डेटा का स्थानांतरण तब तक जारी रहा जब तक कि सर्वर ने सॉकेट बंद नहीं कर दिया।

ए  क्लाइंट को सूचित करने के लिए इस्तेमाल किया जा सकता है कि ट्रांसमिटेड डेटा का बॉडी एंटिटी पार्ट gzip एल्गोरिथम द्वारा कंप्रेस किया गया है।

एन्क्रिप्टेड कनेक्शन
एन्क्रिप्टेड HTTP कनेक्शन स्थापित करने का सबसे लोकप्रिय तरीका HTTPS है। एन्क्रिप्टेड HTTP कनेक्शन स्थापित करने के लिए दो अन्य तरीके भी मौजूद हैं: सुरक्षित हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल, और टीएलएस में अपग्रेड निर्दिष्ट करने के लिए HTTP/1.1 अपग्रेड हेडर का उपयोग करना। हालाँकि, इन दोनों के लिए ब्राउज़र समर्थन लगभग न के बराबर है।

समान प्रोटोकॉल

 * गोफर (प्रोटोकॉल) एक सामग्री वितरण प्रोटोकॉल है जिसे 1990 के दशक की शुरुआत में HTTP द्वारा विस्थापित किया गया था।
 * SPDY प्रोटोकॉल, Google द्वारा विकसित HTTP का एक विकल्प है, जिसका स्थान HTTP/2 ने ले लिया है।
 * मिथुन (प्रोटोकॉल) एक गोफर-प्रेरित प्रोटोकॉल है जो गोपनीयता से संबंधित सुविधाओं को अनिवार्य करता है।

यह भी देखें

 * अंतर्ग्रहीय फाइल सिस्टम - http की जगह ले सकता है
 * फ़ाइल स्थानांतरण प्रोटोकॉल की तुलना
 * विवश अनुप्रयोग प्रोटोकॉल - HTTP के लिए शब्दार्थ के समान प्रोटोकॉल लेकिन सीमित प्रसंस्करण क्षमता वाले उपकरणों के लिए लक्षित UDP या UDP जैसे संदेशों का उपयोग किया जाता है; HTTP और इंटरनेट मीडिया प्रकार और वेब लिंकिंग जैसी अन्य इंटरनेट अवधारणाओं का पुन: उपयोग करता है ( RFC 5988 )
 * सामग्री बातचीत
 * डाइजेस्ट एक्सेस ऑथेंटिकेशन
 * HTTP संपीड़न
 * HTTP/2 - IETF के हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (httpbis) वर्किंग ग्रुप द्वारा विकसित किया गया
 * HTTP शीर्षलेख फ़ील्ड की सूची
 * HTTP स्थिति कोड की सूची
 * प्रतिनिधित्वात्मक राज्य स्थानांतरण (REST)
 * भिन्न वस्तु
 * वेब कैश
 * वेबसॉकेट

बाहरी कड़ियाँ



 * A detailed technical history of HTTP.
 * Design Issues by Berners-Lee when he was designing the protocol.