एचटीटीपी: Difference between revisions
No edit summary |
No edit summary |
||
Line 69: | Line 69: | ||
== इतिहास == | == इतिहास == | ||
[[File:Tim Berners-Lee CP 2.jpg|thumb| | [[File:Tim Berners-Lee CP 2.jpg|thumb|टिम बर्नर्स-ली]]हाइपरटेक्स्ट शब्द [[टेड नेल्सन]] द्वारा 1965 में ज़ानाडू प्रोजेक्ट में गढ़ा गया था, जो [[वन्नेवर बुश]] के 1930 के दशक के माइक्रोफिल्म-आधारित सूचना पुनर्प्राप्ति और प्रबंधन "[[मेमेक्स|मेमेक्स"]] प्रणाली से प्रेरित था, जिसे उनके 1945 के निबंध "ऐज़ वी मे थिंक" में वर्णित किया गया था। सर्न में टिम बर्नर्स-ली और उनकी टीम को एचटीएमएल और वेब सर्वर के लिए संबंधित प्रौद्योगिकी और वेब ब्राउज़र नामक क्लाइंट [[ प्रयोक्ता इंटरफ़ेस |प्रयोक्ता इंटरफ़ेस]] के साथ मूल एचटीटीपी का आविष्कार करने का श्रेय दिया जाता है। बर्नर्स-ली ने अपने अन्य विचार: "वर्ल्डवाइडवेब" प्रोजेक्ट को अपनाने में मदद करने के लिए एचटीटीपी को डिज़ाइन किया, जिसे पहली बार 1989 में प्रस्तावित किया गया था, जिसे अब वर्ल्ड वाइड वेब के रूप में जाना जाता है। | ||
[[CERN httpd|प्रथम वेब सर्वर]] 1990 में लाइव हुआ।<ref>{{Cite web |title=वेब का आविष्कार, वेब इतिहास, वेब का आविष्कार किसने किया, टिम बर्नर्स-ली, रॉबर्ट कैलियाउ, सर्न, पहला वेब सर्वर|url=https://www.livinginternet.com/w/wi_lee.htm |access-date=2021-08-11 |website=LivingInternet |language=en-US}}</ref><ref>{{Cite web |last=Berners-Lee| first=Tim| date=1990-10-02| title=daemon.c - TCP/IP based server for HyperText |url=https://www.w3.org/Daemon/old/V0.1/daemon.c |access-date=2021-08-11 |website=www.w3.org}}</ref> उपयोग किए गए प्रोटोकॉल में केवल एक विधि थी, अर्थात् जीईटी, जो सर्वर से पृष्ठ का अनुरोध करेगी।<ref>{{cite web |last=Berners-Lee |first=Tim |title=हाइपरटेक्स्ट परहस्त शिष्टाचार|url=https://www.w3.org/History/19921103-hypertext/hypertext/WWW/Protocols/HTTP.html|publisher=[[World Wide Web Consortium]] |access-date=31 August 2010 }}</ref> सर्वर से प्रतिक्रिया सदैव एचटीएमएल पृष्ठ होती थी। <रेफरी नाम = HTTP/0.9-विनिर्देशन /> | [[CERN httpd|प्रथम वेब सर्वर]] 1990 में लाइव हुआ।<ref>{{Cite web |title=वेब का आविष्कार, वेब इतिहास, वेब का आविष्कार किसने किया, टिम बर्नर्स-ली, रॉबर्ट कैलियाउ, सर्न, पहला वेब सर्वर|url=https://www.livinginternet.com/w/wi_lee.htm |access-date=2021-08-11 |website=LivingInternet |language=en-US}}</ref><ref>{{Cite web |last=Berners-Lee| first=Tim| date=1990-10-02| title=daemon.c - TCP/IP based server for HyperText |url=https://www.w3.org/Daemon/old/V0.1/daemon.c |access-date=2021-08-11 |website=www.w3.org}}</ref> उपयोग किए गए प्रोटोकॉल में केवल एक विधि थी, अर्थात् जीईटी, जो सर्वर से पृष्ठ का अनुरोध करेगी।<ref>{{cite web |last=Berners-Lee |first=Tim |title=हाइपरटेक्स्ट परहस्त शिष्टाचार|url=https://www.w3.org/History/19921103-hypertext/hypertext/WWW/Protocols/HTTP.html|publisher=[[World Wide Web Consortium]] |access-date=31 August 2010 }}</ref> सर्वर से प्रतिक्रिया सदैव एचटीएमएल पृष्ठ होती थी। <रेफरी नाम = HTTP/0.9-विनिर्देशन /> | ||
Line 103: | Line 103: | ||
: 1991 में, एचटीटीपी का प्रथम प्रलेखित आधिकारिक संस्करण सादे दस्तावेज़ के रूप में लिखा गया था, जो 700 शब्दों से अल्प लंबा था, और इस संस्करण को एचटीटीपी/0.9 नाम दिया गया था। एचटीटीपी/0.9 केवल गेट विधि का समर्थन करता है, क्लाइंट को सर्वर से केवल एचटीएमएल दस्तावेज़ प्राप्त करने की अनुमति देता है, लेकिन किसी अन्य फ़ाइल स्वरूपों या सूचना अपलोड का समर्थन नहीं करता है।<ref name= HTTP/0.9-specifications /> | : 1991 में, एचटीटीपी का प्रथम प्रलेखित आधिकारिक संस्करण सादे दस्तावेज़ के रूप में लिखा गया था, जो 700 शब्दों से अल्प लंबा था, और इस संस्करण को एचटीटीपी/0.9 नाम दिया गया था। एचटीटीपी/0.9 केवल गेट विधि का समर्थन करता है, क्लाइंट को सर्वर से केवल एचटीएमएल दस्तावेज़ प्राप्त करने की अनुमति देता है, लेकिन किसी अन्य फ़ाइल स्वरूपों या सूचना अपलोड का समर्थन नहीं करता है।<ref name= HTTP/0.9-specifications /> | ||
एचटीटीपी/1.0-ड्राफ्ट | एचटीटीपी/1.0-ड्राफ्ट | ||
: 1992 के पश्चात से, इसके अगले पूर्ण संस्करण के लिए मूल प्रोटोकॉल के विकास को निर्दिष्ट करने के लिए नया दस्तावेज़ लिखा गया था। यह 0.9 संस्करण की सरल अनुरोध विधि और क्लाइंट | : 1992 के पश्चात से, इसके अगले पूर्ण संस्करण के लिए मूल प्रोटोकॉल के विकास को निर्दिष्ट करने के लिए नया दस्तावेज़ लिखा गया था। यह 0.9 संस्करण की सरल अनुरोध विधि और क्लाइंट एचटीटीपी संस्करण को सम्मिलित करने वाले पूर्ण गेट अनुरोध दोनों का समर्थन करता है। यह अनेक अनौपचारिक एचटीटीपी/1.0 ड्राफ्ट में से प्रथम था जो एचटीटीपी/1.0 पर अंतिम कार्य से पूर्व था।<ref name= HTTP/1.0-first-unofficial-draft /> | ||
डब्ल्यू3सी एचटीटीपी वर्किंग ग्रुप | |||
: यह तय करने के पश्चात कि एचटीटीपी प्रोटोकॉल की नई विशेषताओं की आवश्यकता थी और उन्हें टिप्पणियों के लिए आधिकारिक अनुरोध के रूप में प्रत्येक प्रकार से प्रलेखित किया जाना था, 1995 की प्रारंभ में मानकीकरण के उद्देश्य से एचटीटीपी वर्किंग ग्रुप (एचटीटीपी WG, [[डेव रैगेट]] के नेतृत्व में) का गठन किया गया था और विस्तारित संचालन, विस्तारित बातचीत, समृद्ध मेटा-सूचना के साथ प्रोटोकॉल का विस्तार करें, सुरक्षा प्रोटोकॉल से जुड़ा हुआ है जो अतिरिक्त तरीकों और एचटीटीपी हेडर फ़ील्ड की सूची जोड़कर अधिक कुशल हो गया है।<ref name="raggettprofile">{{Cite web |last=Raggett |first=Dave |title=डेव रैगेट का बायो|url=https://www.w3.org/People/Raggett/profile.html|publisher=World Wide Web Consortium |access-date=11 June 2010}}</ref><ref>{{cite web |last1=Raggett |first1=Dave |title=हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल वर्किंग ग्रुप|url=https://www.w3.org/Arena/webworld/httpwgcharter.html |publisher=World Wide Web Consortium |access-date=29 September 2010 |first2=Tim |last2=Berners-Lee}}</ref> | : यह तय करने के पश्चात कि एचटीटीपी प्रोटोकॉल की नई विशेषताओं की आवश्यकता थी और उन्हें टिप्पणियों के लिए आधिकारिक अनुरोध के रूप में प्रत्येक प्रकार से प्रलेखित किया जाना था, 1995 की प्रारंभ में मानकीकरण के उद्देश्य से एचटीटीपी वर्किंग ग्रुप (एचटीटीपी WG, [[डेव रैगेट]] के नेतृत्व में) का गठन किया गया था और विस्तारित संचालन, विस्तारित बातचीत, समृद्ध मेटा-सूचना के साथ प्रोटोकॉल का विस्तार करें, सुरक्षा प्रोटोकॉल से जुड़ा हुआ है जो अतिरिक्त तरीकों और एचटीटीपी हेडर फ़ील्ड की सूची जोड़कर अधिक कुशल हो गया है।<ref name="raggettprofile">{{Cite web |last=Raggett |first=Dave |title=डेव रैगेट का बायो|url=https://www.w3.org/People/Raggett/profile.html|publisher=World Wide Web Consortium |access-date=11 June 2010}}</ref><ref>{{cite web |last1=Raggett |first1=Dave |title=हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल वर्किंग ग्रुप|url=https://www.w3.org/Arena/webworld/httpwgcharter.html |publisher=World Wide Web Consortium |access-date=29 September 2010 |first2=Tim |last2=Berners-Lee}}</ref> | ||
: एचटीटीपी WG ने 1995 के अंदर एचटीटीपी/1.0 और एचटीटीपी/1.1 के रूप में प्रोटोकॉल के नए संस्करणों को संशोधित और प्रकाशित करने की योजना बनाई, लेकिन, अनेक संशोधनों के कारण, यह समयरेखा वर्ष से अधिक चली।<ref>{{Cite web |last=Raggett |first=Dave |title=HTTP डब्ल्यूजी योजनाएं|url=https://www.w3.org/Arena/webworld/httpwgplans.html |publisher=World Wide Web Consortium |access-date=29 September 2010}}</ref> | : एचटीटीपी WG ने 1995 के अंदर एचटीटीपी/1.0 और एचटीटीपी/1.1 के रूप में प्रोटोकॉल के नए संस्करणों को संशोधित और प्रकाशित करने की योजना बनाई, लेकिन, अनेक संशोधनों के कारण, यह समयरेखा वर्ष से अधिक चली।<ref>{{Cite web |last=Raggett |first=Dave |title=HTTP डब्ल्यूजी योजनाएं|url=https://www.w3.org/Arena/webworld/httpwgplans.html |publisher=World Wide Web Consortium |access-date=29 September 2010}}</ref> |
Revision as of 19:33, 3 March 2023
International standard |
|
---|---|
Developed by | initially CERN; IETF, W3C |
Introduced | 1991 |
HTTP |
---|
Request methods |
Header fields |
Response status codes |
Security access control methods |
Security vulnerabilities |
Internet protocol suite |
---|
Application layer |
Transport layer |
Internet layer |
Link layer |
हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (एचटीटीपी) वितरित, सहयोगी, हाइपरमीडिया सूचना प्रणाली के लिए इंटरनेट प्रोटोकॉल सूट मॉडल में अनुप्रयोग परत प्रोटोकॉल है।[1]एचटीटीपी वर्ल्ड वाइड वेब के लिए डेटा संचार का मूल है, जहां हाइपरटेक्स्ट दस्तावेज़ों में अन्य संसाधनों के हाइपरलिंक्स सम्मिलित होते हैं जिन्हें उपयोगकर्ता सरलता से एक्सेस कर सकता है, उदाहरण के लिए कम्प्यूटर का माउस क्लिक या वेब ब्राउज़र में स्क्रीन टैप करके किया जाता है।
एचटीटीपी का विकास 1989 में सर्न में टिक बर्नर्स-ली द्वारा प्रारंभ किया गया था और क्लाइंट के व्यवहार का वर्णन करने वाले साधारण दस्तावेज़ में सारांशित किया गया था और पूर्व एचटीटीपी प्रोटोकॉल संस्करण का उपयोग करने वाले सर्वर को 0.9 नाम दिया गया था। <रेफरी नाम = HTTP/0.9-विनिर्देश>Tim Berner-Lee (1991-01-01). "1991 में परिभाषित मूल HTTP". www.w3.org (in English). World Wide Web Consortium. Retrieved 2010-07-24.</ref>
एचटीटीपी प्रोटोकॉल का वह प्रथम संस्करण शीघ्र ही अधिक विस्तृत संस्करण में विकसित हुआ जो कि भविष्य के संस्करण 1.0 की ओर प्रथम उपाय था।[2]
टिप्पणियों के लिए प्रारंभिक एचटीटीपी अनुरोधों (आरएफसी) का विकास कुछ साल पश्चात प्रारंभ हुआ और यह इंटरनेट इंजीनियरिंग टास्क फोर्स (आईईटीएफ) और वर्ल्ड वाइड वेब कंसोर्टियम (डब्ल्यू3सी) द्वारा समन्वित प्रयास था, जिसका काम अंत में आईईटीएफ में चला गया।
एचटीटीपी/1 को 1996 में अंतिम रूप दिया गया और प्रत्येक प्रकार से (संस्करण 1.0 के रूप में) प्रलेखित किया गया।
रेफरी> में RFC 1945. उस विनिर्देशन को तब एचटीटीपी/1.1 द्वारा समाप्त कर दिया गया था। </ref> यह 1997 में (संस्करण 1.1 के रूप में) विकसित हुआ और फिर इसके विनिर्देशों को 1999, 2014 और 2022 में अद्यतन किया गया। रेफरी>RFC 2068 (1997) अप्रचलित था RFC 2616 1999 में, जिसे अप्रचलित कर दिया गया था RFC 7230 2014 में, जिसे अप्रचलित किया गया था RFC 9110 2022 में।</ref>
एचटीटीपी नाम का सुरक्षित संस्करण 80% से अधिक वेबसाइटों द्वारा उपयोग किया जाता है।[3]
एचटीटीपी/2, 2015 में प्रकाशित, एचटीटीपी के शब्दार्थ "ऑन द वायर" की अधिक कुशल अभिव्यक्ति प्रदान करता है। अब इसका उपयोग 41% वेबसाइटों द्वारा किया जाता है[4] और लगभग सभी वेब ब्राउज़रों (97% से अधिक उपयोगकर्ताओं) द्वारा समर्थित है।[5] यह एप्लिकेशन-लेयर प्रोटोकॉल निगोशिएशन (एएलपीएन) एक्सटेंशन का उपयोग करके परिवहन परत सुरक्षा (टीएलएस) पर प्रमुख वेब सर्वरों द्वारा भी समर्थित है।[6] जहां टीएलएस 1.2 या नए की आवश्यकता है।[7][8]
एचटीटीपी/3, एचटीटीपी/2 का उत्तराधिकारी, 2022 में प्रकाशित हुआ था।[9] अब इसका उपयोग 25% से अधिक वेबसाइटों द्वारा किया जाता है[10] और अनेक वेब ब्राउज़रों (75% से अधिक उपयोगकर्ताओं) द्वारा समर्थित है।[11] एचटीटीपी/3 अंतर्निहित परिवहन प्रोटोकॉल के लिए प्रसारण नियंत्रण प्रोटोकॉल (टीसीपी) के अतिरिक्त QUIC का उपयोग करता है। एचटीटीपी/2 की तरह, यह प्रोटोकॉल के प्राचीन प्रमुख संस्करणों को अप्रचलित नहीं करता है। एचटीटीपी/3 के लिए समर्थन पूर्व क्लाउडफ्लेयर और गूगल क्रोम में जोड़ा गया था,[12][13] और फ़ायरफ़ॉक्स में भी सक्षम है।[14] एचटीटीपी / 3 में वास्तविक दुनिया के वेब पेजों के लिए अल्प विलंबता है, यदि सर्वर पर सक्षम किया गया है, तो एचटीटीपी/2 की तुलना में तीव्रता से लोड होता है, और एचटीटीपी/1.1 से भी तीव्र, कुछ स्तिथियों में एचटीटीपी/1.1 से 3 × तीव्र (जो अभी भी है) सामान्यतः केवल सक्षम) होता है।[15]
प्रौद्योगिकी सिंहावलोकन
एचटीटीपी क्लाइंट-सर्वर मॉडल में अनुरोध-प्रतिक्रिया प्रोटोकॉल के रूप में कार्य करता है। वेब ब्राउज़र, उदाहरण के लिए, 'क्लाइंट' हो सकता है, जबकि कंप्यूटर प्रक्रिया (कंप्यूटिंग), जिसका नाम वेब सर्वर है, एक या अधिक वेबसाइटें होस्ट (नेटवर्क) पर चलने वाली 'सर्वर' हो सकती हैं। क्लाइंट सर्वर को एचटीटीपी अनुरोध संदेश सबमिट करता है। सर्वर, जो एचटीएमएल फाइल और अन्य सामग्री जैसे 'संसाधन' प्रदान करता है या क्लाइंट की ओर से अन्य कार्य करता है, क्लाइंट को 'प्रतिक्रिया' संदेश देता है। प्रतिक्रिया में अनुरोध के विषय में पूर्णता की स्थिति की जानकारी होती है और इसके संदेश के मुख्य भाग में अनुरोधित सामग्री भी हो सकती है।
वेब ब्राउजर उपयोगकर्ता एजेंट (यूए) का उदाहरण है। अन्य प्रकार के उपयोगकर्ता एजेंट में शोध प्रदाताओं (वेब क्रॉलर), वॉयस ब्राउज़र, मोबाइल एप्लिकेशन और अन्य सॉफ़्टवेयर द्वारा उपयोग किए जाने वाले इंडेक्सिंग सॉफ़्टवेयर सम्मिलित हैं जो वेब सामग्री तक पहुंचते हैं, उपभोग करते हैं या प्रदर्शित करते हैं।
एचटीटीपी को क्लाइंट और सर्वर के मध्य संचार को उत्तम बनाने या सक्षम करने के लिए मध्यवर्ती नेटवर्क तत्वों को अनुमति देने के लिए डिज़ाइन किया गया है। उच्च-ट्रैफ़िक वेबसाइटें प्रायः वेब कैश सर्वर से लाभान्वित होती हैं जो प्रतिक्रिया समय को उत्तम बनाने के लिए अपस्ट्रीम सर्वर की ओर से सामग्री वितरित करती हैं। वेब ब्राउज़र पूर्व से एक्सेस किए गए वेब संसाधनों को कैश करते हैं और नेटवर्क ट्रैफ़िक को अल्प करने के लिए, जब भी संभव हो, उनका पुन: उपयोग करते हैं। निजी नेटवर्क सीमाओं पर एचटीटीपी प्रॉक्सी सर्वर बाहरी सर्वर के साथ संदेशों को रिले करके वैश्विक रूप से निष्क्रिय पते के बिना ग्राहकों के लिए संचार की सुविधा प्रदान कर सकते हैं।
इंटरमीडिएट एचटीटीपी नोड्स (प्रॉक्सी सर्वर, वेब कैश आदि) को उनके कार्यों को पूर्ण करने की अनुमति देने के लिए, कुछ एचटीटीपी शीर्षलेख (एचटीटीपी अनुरोधों/प्रतिक्रियाओं में पाए जाते हैं) को हॉप-बाय-हॉप प्रबंधित किया जाता है। जबकि अन्य एचटीटीपी शीर्षलेख एंड-टू-एंड सिद्धांत पर प्रबंधित (केवल स्रोत क्लाइंट और लक्ष्य वेब सर्वर द्वारा प्रबंधित) होते हैं।
एचटीटीपी एप्लिकेशन लेयर प्रोटोकॉल है जिसे इंटरनेट प्रोटोकॉल सूट के प्रारूपके अंदर डिज़ाइन किया गया है। इसकी परिभाषा अंतर्निहित और विश्वसनीय परिवहन परत प्रोटोकॉल मानती है,[16]इस प्रकार ट्रांसमिशन कंट्रोल प्रोटोकॉल (टीसीपी) का सामान्यतः उपयोग किया जाता है। चूँकि, एचटीटीपी को उपयोगकर्ता डेटाग्राम प्रोटेकॉल (यूडीपी) जैसे अविश्वसनीय प्रोटोकॉल का उपयोग करने के लिए अनुकूलित किया जा सकता है, उदाहरण के लिए एचटीटीपीयू और सरल सेवा डिस्कवरी प्रोटोकॉल (एसएसडीपी) में उपयोग किया जाता है।
यूनिफॉर्म रिसोर्स पहचानकर्ता (यूआरआई) योजनाओं http और https का उपयोग करके, यूनिफ़ॉर्म रिसोर्स लोकेटर्स (यूआरएल) द्वारा एचटीटीपी संसाधनों की पहचान की जाती है और उन्हें नेटवर्क पर स्थित किया जाता है। जैसा कि RFC 3986 परिभाषित किया गया है, यूआरएल को एचटीएमएल दस्तावेज़ों में हाइपरलिंक के रूप में एन्कोड किया गया है, जिससे कि आपस में जुड़े हाइपरटेक्स्ट दस्तावेज़ बनाए जा सकें।
एचटीटीपी/1.0 में प्रत्येक संसाधन अनुरोध के लिए एक ही सर्वर से भिन्न कनेक्शन बनाया जाता है।[17]
एचटीटीपी/1.1 में इसके अतिरिक्त टीसीपी कनेक्शन का अनेक संसाधन अनुरोध करने के लिए पुन: उपयोग किया जा सकता है (अर्थात एचटीएमएल पेज, फ्रेम, इमेज, क्लाइंट-साइड स्क्रिप्टिंग, व्यापक शैली पत्रक आदि सम्मिलित हैं)।[18][19]
एचटीटीपी/1.1 संचार इसलिए अल्प विलंबता (इंजीनियरिंग) का अनुभव करते हैं क्योंकि टीसीपी कनेक्शन की स्थापना विशेष रूप से उच्च यातायात स्थितियों के अंतर्गत अधिक ओवरहेड प्रस्तुत करती है।[20]
एचटीटीपी/2 प्राचीन एचटीटीपी/1.1 का संशोधन है जिससे कि समान क्लाइंट-सर्वर मॉडल और समान प्रोटोकॉल विधियों को बनाए रखा जा सके लेकिन इन अंतरों के क्रम में, जो निम्न प्रकार हैं :
- टेक्स्ट के अतिरिक्त मेटाडेटा (एचटीटीपी शीर्षलेख) के संकुचित बाइनरी प्रतिनिधित्व का उपयोग करने के लिए, जिससे कि शीर्षलेख को अल्प जगह की आवश्यकता हो;
- 2 से 8 टीसीपी/आईपी कनेक्शन के अतिरिक्त प्रत्येक एक्सेस किए गए सर्वर डोमेन के लिए टीसीपी/इंटरनेट प्रोटोकॉल (सामान्यतः एन्क्रिप्टेड) कनेक्शन का उपयोग करने के लिए करते हैं;
- प्रति टीसीपी / आईपी कनेक्शन में एक या एक से अधिक द्विदिश धाराओं का उपयोग करने के लिए जिसमें एचओएलबी (लाइन ब्लॉकिंग के प्रमुख) की समस्या को हल करने के लिए एचटीटीपी अनुरोधों और प्रतिक्रियाओं को तोड़ दिया जाता है और छोटे पैकेटों में प्रेषित किया जाता है। [note 1]
- नया डेटा उपलब्ध होने पर सर्वर एप्लिकेशन को ग्राहकों को डेटा भेजने की अनुमति देने के लिए पुश क्षमता जोड़ने के लिए (ग्राहकों को मतदान (कंप्यूटर विज्ञान) विधियों का उपयोग करके सर्वर से समय-समय पर नए डेटा का अनुरोध करने के लिए मजबूर किए बिना)।[21]
एचटीटीपी/2 संचार इसलिए बहुत अल्प विलंबता का अनुभव करते हैं और, ज्यादातर स्तिथियों में, एचटीटीपी/1.1 संचार से भी अधिक गति।
एचटीटीपी/3 टीसीपी/आईपी कनेक्शन के अतिरिक्त क्विक + यूडीपी ट्रांसपोर्ट प्रोटोकॉल का उपयोग करने के लिए प्राचीन एचटीटीपी/2 का संशोधन है, संचार की औसत गति में थोड़ा सुधार करने और टीसीपी/आईपी कनेक्शन की सामयिक (बहुत दुर्लभ) समस्या से बचने के लिए टीसीपी भीड़ नियंत्रण जो अपनी सभी धाराओं के डेटा प्रवाह को अस्थायी रूप से ब्लॉक या धीमा कर सकता है ('हेड ऑफ लाइन ब्लॉकिंग का दूसरा रूप)।
इतिहास
हाइपरटेक्स्ट शब्द टेड नेल्सन द्वारा 1965 में ज़ानाडू प्रोजेक्ट में गढ़ा गया था, जो वन्नेवर बुश के 1930 के दशक के माइक्रोफिल्म-आधारित सूचना पुनर्प्राप्ति और प्रबंधन "मेमेक्स" प्रणाली से प्रेरित था, जिसे उनके 1945 के निबंध "ऐज़ वी मे थिंक" में वर्णित किया गया था। सर्न में टिम बर्नर्स-ली और उनकी टीम को एचटीएमएल और वेब सर्वर के लिए संबंधित प्रौद्योगिकी और वेब ब्राउज़र नामक क्लाइंट प्रयोक्ता इंटरफ़ेस के साथ मूल एचटीटीपी का आविष्कार करने का श्रेय दिया जाता है। बर्नर्स-ली ने अपने अन्य विचार: "वर्ल्डवाइडवेब" प्रोजेक्ट को अपनाने में मदद करने के लिए एचटीटीपी को डिज़ाइन किया, जिसे पहली बार 1989 में प्रस्तावित किया गया था, जिसे अब वर्ल्ड वाइड वेब के रूप में जाना जाता है।
प्रथम वेब सर्वर 1990 में लाइव हुआ।[22][23] उपयोग किए गए प्रोटोकॉल में केवल एक विधि थी, अर्थात् जीईटी, जो सर्वर से पृष्ठ का अनुरोध करेगी।[24] सर्वर से प्रतिक्रिया सदैव एचटीएमएल पृष्ठ होती थी। <रेफरी नाम = HTTP/0.9-विनिर्देशन />
एचटीटीपी माइलस्टोन संस्करणों का सारांश
संस्करण | वर्ष प्रस्तुत किया | वर्तमान स्थिति |
---|---|---|
एचटीटीपी/0.9 | 1991 | Obsolete |
एचटीटीपी/1.0 | 1996 | Obsolete |
एचटीटीपी/1.1 | 1997 | Standard |
एचटीटीपी/2 | 2015 | Standard |
एचटीटीपी/3 | 2022 | Standard |
एचटीटीपी/0.9
- 1991 में, एचटीटीपी का प्रथम प्रलेखित आधिकारिक संस्करण सादे दस्तावेज़ के रूप में लिखा गया था, जो 700 शब्दों से अल्प लंबा था, और इस संस्करण को एचटीटीपी/0.9 नाम दिया गया था। एचटीटीपी/0.9 केवल गेट विधि का समर्थन करता है, क्लाइंट को सर्वर से केवल एचटीएमएल दस्तावेज़ प्राप्त करने की अनुमति देता है, लेकिन किसी अन्य फ़ाइल स्वरूपों या सूचना अपलोड का समर्थन नहीं करता है।[25]
एचटीटीपी/1.0-ड्राफ्ट
- 1992 के पश्चात से, इसके अगले पूर्ण संस्करण के लिए मूल प्रोटोकॉल के विकास को निर्दिष्ट करने के लिए नया दस्तावेज़ लिखा गया था। यह 0.9 संस्करण की सरल अनुरोध विधि और क्लाइंट एचटीटीपी संस्करण को सम्मिलित करने वाले पूर्ण गेट अनुरोध दोनों का समर्थन करता है। यह अनेक अनौपचारिक एचटीटीपी/1.0 ड्राफ्ट में से प्रथम था जो एचटीटीपी/1.0 पर अंतिम कार्य से पूर्व था।[2]
डब्ल्यू3सी एचटीटीपी वर्किंग ग्रुप
- यह तय करने के पश्चात कि एचटीटीपी प्रोटोकॉल की नई विशेषताओं की आवश्यकता थी और उन्हें टिप्पणियों के लिए आधिकारिक अनुरोध के रूप में प्रत्येक प्रकार से प्रलेखित किया जाना था, 1995 की प्रारंभ में मानकीकरण के उद्देश्य से एचटीटीपी वर्किंग ग्रुप (एचटीटीपी WG, डेव रैगेट के नेतृत्व में) का गठन किया गया था और विस्तारित संचालन, विस्तारित बातचीत, समृद्ध मेटा-सूचना के साथ प्रोटोकॉल का विस्तार करें, सुरक्षा प्रोटोकॉल से जुड़ा हुआ है जो अतिरिक्त तरीकों और एचटीटीपी हेडर फ़ील्ड की सूची जोड़कर अधिक कुशल हो गया है।[26][27]
- एचटीटीपी WG ने 1995 के अंदर एचटीटीपी/1.0 और एचटीटीपी/1.1 के रूप में प्रोटोकॉल के नए संस्करणों को संशोधित और प्रकाशित करने की योजना बनाई, लेकिन, अनेक संशोधनों के कारण, यह समयरेखा वर्ष से अधिक चली।[28]
- एचटीटीपी डब्ल्यूजी ने एचटीटीपी-एनजी (एचटीटीपी नेक्स्ट जेनरेशन) नामक एचटीटीपी के भविष्य के संस्करण को निर्दिष्ट करने की भी योजना बनाई है, जो प्रदर्शन, अल्प विलंबता प्रतिक्रियाओं आदि से संबंधित प्राचीन संस्करणों की सभी शेष समस्याओं को हल कर देगा, लेकिन यह काम केवल प्रारंभ हुआ कुछ साल पश्चात और यह कभी पूर्ण नहीं हुआ।
एचटीटीपी/1.0
- मई 1996 में, RFC 1945 प्राचीन 4 वर्षों में पूर्व-मानक एचटीटीपी/1.0-ड्राफ्ट के रूप में उपयोग किए गए अंतिम एचटीटीपी/1.0 संशोधन के रूप में प्रकाशित किया गया था जो पूर्वसे ही अनेक वेब ब्राउज़रों और वेब सर्वरों द्वारा उपयोग किया जा चुका था।
- 1996 की प्रारंभ में डेवलपर्स ने आगामी एचटीटीपी/1.1 विनिर्देशों के ड्राफ्ट का उपयोग करके अपने उत्पादों में एचटीटीपी/1.0 प्रोटोकॉल के अनौपचारिक विस्तार (अर्थात कनेक्शन को जीवित रखना, आदि) को सम्मिलित करना प्रारंभ कर दिया।[29]एचटीटीपी/1.1
- 1996 की प्रारंभ से, प्रमुख वेब ब्राउज़र और वेब सर्वर डेवलपर्स ने भी पूर्व-मानक एचटीटीपी/1.1 ड्राफ्ट विनिर्देशों द्वारा निर्दिष्ट नई सुविधाओं को लागू करना प्रारंभ कर दिया। ब्राउज़रों और सर्वरों के नए संस्करणों को एंड-यूज़र अपनाने की गति तीव्र थी। मार्च 1996 में, वेब होस्टिंग कंपनी ने बताया कि इंटरनेट पर उपयोग में आने वाले 40% से अधिक ब्राउज़रों ने वर्चुअल होस्टिंग को सक्षम करने के लिए नए एचटीटीपी/1.1 हेडर होस्ट का उपयोग किया। उसी वेब होस्टिंग कंपनी ने बताया कि जून 1996 तक, उनके सर्वर तक पहुँचने वाले सभी ब्राउज़रों में से 65% पूर्व-मानक एचटीटीपी/1.1 अनुरूप थे।[30]
- जनवरी 1997 में, RFC 2068 आधिकारिक तौर पर एचटीटीपी/1.1 विनिर्देशों के रूप में जारी किया गया था।
- जून 1999 में, RFC 2616 प्राचीन (अप्रचलित) एचटीटीपी/1.1 विनिर्देशों के आधार पर सभी सुधारों और अद्यतनों को सम्मिलित करने के लिए जारी किया गया था।
- W3C HTTP-NG वर्किंग ग्रुप
- प्राचीन एचटीटीपी वर्किंग ग्रुप की 1995 की पुरानी योजना को फिर से प्रारंभ करते हुए, 1997 में एचटीटीपी-एनजी (एचटीटीपी न्यू जनरेशन) नामक नया एचटीटीपी प्रोटोकॉल विकसित करने के लिए एचटीटीपी-एनजी वर्किंग ग्रुप बनाया गया था। एकल टीसीपी/आईपी कनेक्शन के अंदर एचटीटीपी लेनदेन के बहुसंकेतन का उपयोग करने के लिए नए प्रोटोकॉल के लिए कुछ प्रस्ताव/ड्राफ्ट तैयार किए गए थे, लेकिन 1999 में, समूह ने आईईटीएफ को प्रौद्योगिकी समस्याओं को पास करते हुए अपनी गतिविधि बंद कर दी।[31]
आईईटीएफ एचटीटीपी वर्किंग ग्रुप फिर से प्रारंभ हुआ
- 2007 में, IETF HTTP Working Group (HTTP WG bis या HTTPbis) को पूर्वप्राचीन HTTP/1.1 विनिर्देशों को संशोधित करने और स्पष्ट करने के लिए और दूसरा भविष्य के HTTP/2 विनिर्देशों को लिखने और परिष्कृत करने के लिए फिर से प्रारंभ किया गया था ( नाम httpbis)।[32][33]
- SPDY: Google द्वारा विकसित अनौपचारिक HTTP प्रोटोकॉल
- 2009 में, Google, निजी कंपनी, ने घोषणा की कि उसने SPDY नामक नए HTTP बाइनरी प्रोटोकॉल का विकास और परीक्षण किया है। निहित उद्देश्य वेब ट्रैफ़िक को बहुत तीव्र करना था (विशेष रूप से भविष्य के वेब ब्राउज़र और उसके सर्वर के मध्य)।
- एसपीडीवाई वास्तव में अनेक परीक्षणों में एचटीटीपी/1.1 की तुलना में बहुत तेज था और इसलिए इसे क्रोमियम (वेब ब्राउज़र) और फिर अन्य प्रमुख वेब ब्राउज़रों द्वारा जल्दी से अपनाया गया था।[34]
- एक ही टीसीपी/आईपी कनेक्शन पर एचटीटीपी स्ट्रीम को मल्टीप्लेक्स करने के विषय में कुछ विचार डब्ल्यू3सी एचटीटीपी-एनजी वर्किंग ग्रुप के काम सहित विभिन्न स्रोतों से लिए गए थे।
एचटीटीपी/2
- जनवरी-मार्च 2012 में, HTTP वर्किंग ग्रुप (HTTPbis) ने नए HTTP/2 प्रोटोकॉल (HTTP/1.1 विनिर्देशों के संशोधन को पूर्ण करते समय) पर ध्यान केंद्रित करने की आवश्यकता की घोषणा की, संभवतः SPDY के लिए विचारों और किए गए कार्यों को ध्यान में रखते हुए।
रेफरी नाम = HTTPbis-rechartering-prop >"httpbis को रिचार्ज करना" (in English). IETF; HTTP WG. 2012-01-24. Retrieved 2021-10-19.</ref>[35]
- HTTP का नया संस्करण विकसित करने के लिए क्या करना है, इसके विषय में कुछ महीनों के बाद, इसे SPDY से प्राप्त करने का निर्णय लिया गया।[36]
- मई 2015 में, HTTP/2 को इस रूप में प्रकाशित किया गया था RFC 7540 और पूर्वसे ही एसपीडीवाई का समर्थन करने वाले सभी वेब ब्राउज़रों द्वारा तेजी से अपनाया गया और वेब सर्वरों द्वारा धीरे-धीरे अपनाया गया।
2014 HTTP/1.1 के लिए अद्यतन
- HTTP/0.9 मूल्यह्रास
- में RFC 7230 परिशिष्ट-A, HTTP/0.9 को HTTP/1.1 संस्करण (और उच्चतर) का समर्थन करने वाले सर्वरों के लिए बहिष्कृत कर दिया गया था:[37]
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 प्रोटोकॉल के समर्थन को धीरे-धीरे अल्प करने और खारिज करने की योजना बनाना प्रारंभ कर दिया है:[38]
- यह इतना सरल है कि RFC दस्तावेज़ कभी नहीं लिखा गया था (केवल मूल दस्तावेज़ है);[25]
- इसमें कोई एचटीटीपी हेडर नहीं है और अनेक अन्य विशेषताओं का अभाव है जो आजकल न्यूनतम सुरक्षा कारणों से आवश्यक हैं;
- यह 1999..2000 (HTTP/1.0 और HTTP/1.1 के कारण) से व्यापक नहीं हुआ है और सामान्यतः केवल कुछ बहुत पुराने नेटवर्क हार्डवेयर, अर्थात राउटर (कंप्यूटिंग), आदि द्वारा उपयोग किया जाता है।
- [note 2]
एचटीटीपी/3
- 2020 में, प्रथमड्राफ्ट HTTP/3 प्रकाशित किया गया और प्रमुख वेब ब्राउज़र और वेब सर्वर ने इसे अपनाना प्रारंभ कर दिया।
- 6 जून 2022 को आईईटीएफ ने एचटीटीपी/3 को मानकीकृत किया RFC 9114.[39]
2022 में अपडेट और रीफैक्टरिंग
- जून 2022 में, RFC का बैच प्रकाशित किया गया था, जिसमें प्राचीन अनेक दस्तावेज़ों को विस्थापित कर दिया गया था और कुछ छोटे बदलावों को प्रस्तुत किया गया था और भिन्न दस्तावेज़ में HTTP सिमेंटिक विवरण की रीफैक्टरिंग की गई थी।
HTTP डेटा एक्सचेंज
HTTP स्टेटलेस प्रोटोकॉल एप्लिकेशन-लेवल प्रोटोकॉल है और इसे क्लाइंट और सर्वर के मध्य डेटा के आदान-प्रदान के लिए विश्वसनीय नेटवर्क ट्रांसपोर्ट कनेक्शन की आवश्यकता होती है।[16] एचटीटीपी कार्यान्वयन में, ट्रांसमिशन कंट्रोल प्रोटोकॉल | टीसीपी/आईपी कनेक्शन का उपयोग प्रसिद्ध टीसीपी और यूडीपी पोर्ट्स का उपयोग करके किया जाता है (सामान्यतः टीसीपी पोर्ट यदि कनेक्शन अनएन्क्रिप्टेड है या पोर्ट 443 यदि कनेक्शन एन्क्रिप्ट किया गया है, तो टीसीपी और यूडीपी पोर्ट नंबरों की सूची भी देखें)।[40][41] HTTP/2 में, TCP/IP कनेक्शन और अनेक प्रोटोकॉल चैनल का उपयोग किया जाता है। HTTP/3 में, यूडीपी पर एप्लिकेशन ट्रांसपोर्ट प्रोटोकॉल क्विक का उपयोग किया जाता है।
कनेक्शन के माध्यम से अनुरोध और प्रतिक्रिया संदेश
अनुरोध-प्रतिक्रिया | अनुरोध-प्रतिक्रिया संदेशों के अनुक्रम के माध्यम से डेटा का आदान-प्रदान किया जाता है, जो सत्र परत परिवहन कनेक्शन द्वारा आदान-प्रदान किया जाता है।[16]एक HTTP क्लाइंट प्रारंभ में कनेक्शन (वास्तविक या वर्चुअल) स्थापित करने वाले सर्वर से कनेक्ट करने का प्रयास करता है। उस पोर्ट पर सुनने वाला HTTP(S) सर्वर कनेक्शन स्वीकार करता है और फिर क्लाइंट के अनुरोध संदेश की प्रतीक्षा करता है। क्लाइंट सर्वर को अपना अनुरोध भेजता है। अनुरोध प्राप्त होने पर, सर्वर HTTP प्रतिक्रिया संदेश वापस भेजता है (यदि आवश्यक हो तो हेडर प्लस बॉडी)। इस संदेश का मुख्य भाग सामान्यतः अनुरोधित संसाधन है, चूँकि त्रुटि संदेश या अन्य जानकारी भी लौटाई जा सकती है। किसी भी समय (अनेक कारणों से) क्लाइंट या सर्वर कनेक्शन बंद कर सकता है। सर्वर या क्लाइंट को भेजे गए अंतिम अनुरोध/प्रतिक्रिया संदेश में या अधिक HTTP शीर्षलेखों का उपयोग करके सामान्यतः कनेक्शन बंद करना अग्रिम रूप से विज्ञापित किया जाता है।[18]
निरंतर कनेक्शन
HTTP/0.9 में, सर्वर प्रतिक्रिया भेजे जाने के पश्चात टीसीपी/आईपी कनेक्शन सदैव बंद रहता है, इसलिए यह कभी भी स्थायी नहीं होता है।
HTTP/1.0 में, जैसा कि RFC 1945 में कहा गया है, प्रतिक्रिया भेजे जाने के पश्चात TCP/IP कनेक्शन को सदैव सर्वर द्वारा बंद कर दिया जाना चाहिए। [note 3]
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 संपीड़न थी या नहीं।
- यदि किसी संसाधन की सामग्री की कुल लंबाई पूर्वसे ज्ञात नहीं थी (अर्थात क्योंकि यह गतिशील रूप से उत्पन्न हुई थी, आदि) तो हेडर
"Content-Length: number"
HTTP हेडर में उपस्थित नहीं था और क्लाइंट ने माना कि जब सर्वर ने कनेक्शन बंद कर दिया, तो सामग्री प्रत्येक प्रकार से भेज दी गई थी। यह तंत्र संसाधन हस्तांतरण के मध्य सफलतापूर्वक पूर्ण और बाधित (एक सर्वर / नेटवर्क त्रुटि या कुछ और के कारण) के मध्य अंतर नहीं कर सका। - एचटीटीपी/1.1
- HTTP/1.1 प्रस्तुत किया गया:
- नए हेडर कैश्ड संसाधनों की सशर्त पुनर्प्राप्ति को उत्तमढंग से प्रबंधित करने के लिए।
- खंडित स्थानांतरण एन्कोडिंग सामग्री को टुकड़ों में प्रवाहित करने की अनुमति देने के लिए विश्वसनीय रूप से भेजने के लिए भले ही सर्वर को इसकी लंबाई पूर्व से पता न हो (अर्थात क्योंकि यह गतिशील रूप से उत्पन्न होता है, आदि)।
- * बाइट सर्विंग, जहां ग्राहक संसाधन के केवल या से अधिक भागों (बाइट्स की रेंज) का अनुरोध कर सकता है (अर्थात प्रथमभाग, मध्य में भाग या पूरी सामग्री के अंत में, आदि) और सर्वर सामान्यतः केवल अनुरोधित भाग भेजता है। यह बाधित डाउनलोड को फिर से प्रारंभ करने के लिए उपयोगी होता है (जब फ़ाइल वास्तव में बड़ी होती है), जब किसी सामग्री का केवल भाग दिखाना होता है या ब्राउज़र द्वारा पूर्वसे ही दिखाई देने वाले भाग में गतिशील रूप से जोड़ा जाता है (अर्थात केवल पहली या निम्नलिखित एन टिप्पणियाँ) वेब पेज) खाली समय, बैंडविड्थ और प्रणाली संसाधनों आदि के लिए।
- एचटीटीपी/2, एचटीटीपी/3
- एचटीटीपी/2 और एचटीटीपी/3 दोनों में एचटीटीपी/1.1 की उपरोक्त विशेषताएं रखी गई हैं।
HTTP प्रमाणीकरण
HTTP अनेक प्रमाणीकरण योजनाएँ प्रदान करता है जैसे कि बुनियादी पहुँच प्रमाणीकरण और डाइजेस्ट एक्सेस प्रमाणीकरण जो चुनौती-प्रतिक्रिया तंत्र के माध्यम से संचालित होता है जिससे सर्वर अनुरोधित सामग्री की सेवा करने से पूर्वचुनौती की पहचान करता है और उसे जारी करता है।
HTTP चुनौती-प्रतिक्रिया प्रमाणीकरण योजनाओं के विस्तृत सेट के माध्यम से अभिगम नियंत्रण और प्रमाणीकरण के लिए सामान्य ढांचा प्रदान करता है, जिसका उपयोग सर्वर द्वारा क्लाइंट अनुरोध को चुनौती देने के लिए और क्लाइंट द्वारा प्रमाणीकरण जानकारी प्रदान करने के लिए किया जा सकता है।[1] ऊपर वर्णित प्रमाणीकरण तंत्र HTTP प्रोटोकॉल से संबंधित हैं और क्लाइंट और सर्वर HTTP सॉफ़्टवेयर द्वारा प्रबंधित किए जाते हैं (यदि क्लाइंट को या अधिक वेब संसाधनों तक क्लाइंट पहुंच की अनुमति देने से पूर्वप्रमाणीकरण की आवश्यकता के लिए कॉन्फ़िगर किया गया है), और #HTTP एप्लिकेशन सत्र का उपयोग करने वाले वेब एप्लिकेशन द्वारा नहीं।
प्रमाणीकरण क्षेत्र
HTTP प्रमाणीकरण विनिर्देश किसी दिए गए रूट यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर के लिए सामान्य संसाधनों को और विभाजित करने के लिए मनमाना, कार्यान्वयन-विशिष्ट निर्माण भी प्रदान करता है। वास्तविक मूल्य स्ट्रिंग, यदि उपस्थित है, तो चुनौती के सुरक्षा स्थान घटक को बनाने के लिए कैनोनिकल रूट URI के साथ जोड़ा जाता है। यह प्रभावी रूप से सर्वर को रूट यूआरआई के अंतर्गत अलग-भिन्न प्रमाणीकरण स्कोप को परिभाषित करने की अनुमति देता है।[1]
HTTP आवेदन सत्र
HTTP स्टेटलेस प्रोटोकॉल है। स्टेटलेस प्रोटोकॉल के लिए वेब सर्वर को एकाधिक अनुरोधों की अवधि के लिए प्रत्येक उपयोगकर्ता के विषय में जानकारी या स्थिति बनाए रखने की आवश्यकता नहीं होती है।
कुछ वेब एप्लिकेशन को उपयोगकर्ता सत्रों को प्रबंधित करने की आवश्यकता होती है, इसलिए वे उदाहरण के लिए HTTP कुकीज़ का उपयोग करके राज्यों या सत्र (कंप्यूटर विज्ञान) को लागू करते हैं[42] या छिपे हुए चर (कंप्यूटर विज्ञान) प्रपत्र (वेब) के अंदर हैं।
एप्लिकेशन उपयोगकर्ता सत्र प्रारंभ करने के लिए, वेब एप्लिकेशन लॉग इन करें के माध्यम से इंटरैक्टिव प्रमाणीकरण किया जाना चाहिए। उपयोगकर्ता सत्र को रोकने के लिए उपयोगकर्ता द्वारा लॉग आउट ऑपरेशन का अनुरोध किया जाना चाहिए। इस प्रकार के संचालन #HTTP प्रमाणीकरण का उपयोग नहीं करते हैं जबकि कस्टम प्रबंधित वेब अनुप्रयोग प्रमाणीकरण का उपयोग करते हैं।
HTTP/1.1 अनुरोध संदेश
अनुरोध संदेश क्लाइंट द्वारा लक्षित सर्वर को भेजे जाते हैं।[note 4]
अनुरोध सिंटैक्स
क्लाइंट सर्वर को अनुरोध संदेश भेजता है, जिसमें निम्न सम्मिलित हैं:[43]
- एक अनुरोध पंक्ति, जिसमें केस-संवेदी अनुरोध विधि, स्थान (विराम चिह्न), अनुरोधित URL, अन्य स्थान, प्रोटोकॉल संस्करण, कैरिज रिटर्न और रेखा भरण सम्मिलित है, उदाहरण के लिए:
प्राप्त करें /छवियां/logo.png एचटीटीपी/1.1
- शून्य या अधिक HTTP अनुरोध शीर्षलेख फ़ील्ड (HTTP/1.1 के मामले में अल्प से अल्प 1 या अधिक शीर्षलेख), प्रत्येक में केस-असंवेदनशील फ़ील्ड नाम, कोलन, वैकल्पिक अग्रणी व्हाइटस्पेस (कंप्यूटर विज्ञान), फ़ील्ड मान, वैकल्पिक ट्रेलिंग व्हॉट्सएप और कैरिज रिटर्न और लाइन फीड के साथ समाप्त होता है, उदा .:
होस्ट: www.example.com स्वीकार-भाषा: en
- एक खाली लाइन, जिसमें कैरिज रिटर्न और लाइन फीड सम्मिलित है;
- एक वैकल्पिक HTTP संदेश निकाय।
HTTP/1.1 प्रोटोकॉल में, सभी हेडर फ़ील्ड को छोड़कर Host: hostname
वैकल्पिक हैं।
HTTP / 1.0 विनिर्देश से पूर्वHTTP क्लाइंट के साथ संगतता बनाए रखने के लिए सर्वर द्वारा केवल पथ नाम वाली अनुरोध पंक्ति स्वीकार की जाती है RFC 1945.[44]
अनुरोध के विधि
HTTP तरीकों को परिभाषित करता है (कभी-कभी क्रियाओं के रूप में संदर्भित किया जाता है, लेकिन कहीं भी विनिर्देशन में यह क्रिया का उल्लेख नहीं करता है) पहचाने गए संसाधन पर वांछित क्रिया को इंगित करने के लिए। यह संसाधन क्या दर्शाता है, चाहे पूर्व-उपस्थित ा डेटा या डेटा जो गतिशील रूप से उत्पन्न होता है, सर्वर के कार्यान्वयन पर निर्भर करता है। प्रायः, संसाधन फ़ाइल या सर्वर पर निष्पादन योग्य के आउटपुट से मेल खाता है। HTTP/1.0 विनिर्देश[45] GET, HEAD और POST विधियों और HTTP / 1.1 विनिर्देश को परिभाषित किया[46] पांच नए विधि जोड़े: पुट, डिलीट, कनेक्ट, ऑप्शन और ट्रेस। कोई भी क्लाइंट किसी भी विधि का उपयोग कर सकता है और सर्वर को विधियों के किसी भी संयोजन का समर्थन करने के लिए कॉन्फ़िगर किया जा सकता है। यदि कोई विधि किसी मध्यवर्ती के लिए अज्ञात है, तो इसे असुरक्षित और आलस्य के रूप में माना जाएगा। परिभाषित किए जा सकने वाले तरीकों की संख्या की कोई सीमा नहीं है, जो उपस्थित ा बुनियादी ढांचे को तोड़े बिना भविष्य के तरीकों को निर्दिष्ट करने की अनुमति देता है। उदाहरण के लिए, WebDAV ने सात नई विधियों को परिभाषित किया और RFC 5789 पैच क्रिया विधि निर्दिष्ट करता है।
विधि के नाम केस संवेदी होते हैं।[47][48] यह HTTP शीर्षलेख फ़ील्ड नामों के विपरीत है जो केस-असंवेदनशील हैं।[49]
- प्राप्त करें
- GET विधि अनुरोध करती है कि लक्ष्य संसाधन अपने राज्य का प्रतिनिधित्व स्थानांतरित करे। GET अनुरोधों को केवल डेटा पुनर्प्राप्ति होना चाहिए और इसका कोई अन्य प्रभाव नहीं होना चाहिए। (यह कुछ अन्य एचटीटीपी विधियों के लिए भी सही है।)[1]परिवर्तन किए बिना संसाधनों को पुनः प्राप्त करने के लिए, POST पर GET को प्राथमिकता दी जाती है, क्योंकि वे URL के माध्यम से पता योग्यता हो सकते हैं। यह बुकमार्क करने और साझा करने में सक्षम बनाता है और ब्राउज़र कैश के लिए प्रतिक्रिया प्राप्त करता है, जो बैंडविड्थ को बचा सकता है। W3C ने इस भेद पर मार्गदर्शन सिद्धांतों को प्रकाशित किया है, जिसमें कहा गया है, वेब एप्लिकेशन डिज़ाइन को उपरोक्त सिद्धांतों द्वारा सूचित किया जाना चाहिए, लेकिन प्रासंगिक सीमाओं द्वारा भी।[50] नीचे #सुरक्षित विधि देखें।
- HEAD
- HEAD विधि अनुरोध करती है कि लक्ष्य संसाधन अपने राज्य का प्रतिनिधित्व स्थानांतरित करता है, जैसा कि GET अनुरोध के लिए होता है, लेकिन प्रतिक्रिया निकाय में संलग्न प्रतिनिधित्व डेटा के बिना। यह प्रतिक्रिया शीर्षलेख में प्रतिनिधित्व मेटाडेटा को पुनर्प्राप्त करने के लिए उपयोगी है, पूरे प्रतिनिधित्व को स्थानांतरित किए बिना। इसके उपयोगों में यह जांचना सम्मिलित है कि HTTP स्थिति कोड के माध्यम से कोई पृष्ठ उपलब्ध है या नहीं और कम्प्यूटर फाइल के आकार का शीघ्रता से पता लगाना (
Content-Length
).
- POST
- POST (HTTP) अनुरोध करता है कि लक्ष्य संसाधन लक्ष्य संसाधन के शब्दार्थ के अनुसार अनुरोध में संलग्न प्रतिनिधित्व को संसाधित करता है। उदाहरण के लिए, इसका उपयोग इंटरनेट मंच पर संदेश पोस्ट करने, मेलिंग सूची की सदस्यता लेने या ऑनलाइन खरीदारी लेनदेन को पूर्ण करने के लिए किया जाता है।[51]
- पुट
- पुट विधि अनुरोध करती है कि लक्ष्य संसाधन अनुरोध में संलग्न प्रतिनिधित्व द्वारा परिभाषित राज्य के साथ अपने राज्य को बनाएं या अपडेट करें। POST से अंतर यह है कि क्लाइंट सर्वर पर लक्ष्य स्थान निर्दिष्ट करता है।[52]
- DELETE
- DELETE विधि अनुरोध करती है कि लक्ष्य संसाधन अपनी स्थिति को विस्थापित कर दें।
- कनेक्ट
- कनेक्ट विधि अनुरोध करती है कि मध्यस्थ अनुरोध लक्ष्य द्वारा पहचाने गए मूल सर्वर के लिए टनलिंग प्रोटोकॉल | टीसीपी / आईपी सुरंग स्थापित करता है। इसका उपयोग प्रायः ट्रांसपोर्ट लेयर सिक्योरिटी के साथ या से अधिक HTTP प्रॉक्सी के माध्यम से कनेक्शन सुरक्षित करने के लिए किया जाता है।[53][54] HTTP टनल#HTTP कनेक्ट विधि देखें।
- विकल्प
- विकल्प विधि अनुरोध करती है कि लक्ष्य संसाधन HTTP विधियों को स्थानांतरित करता है जो इसका समर्थन करता है। इसका उपयोग किसी विशिष्ट संसाधन के अतिरिक्त '*' अनुरोध करके वेब सर्वर की कार्यक्षमता की जांच करने के लिए किया जा सकता है।
- TRACE
- TRACE विधि अनुरोध करती है कि लक्ष्य संसाधन प्रतिक्रिया निकाय में प्राप्त अनुरोध को स्थानांतरित कर दे। इस तरह ग्राहक देख सकता है कि बिचौलियों द्वारा क्या (यदि कोई हो) परिवर्तन या परिवर्धन किया गया है।
- PATCH
- पैच क्रिया अनुरोध करती है कि लक्ष्य संसाधन अनुरोध में संलग्न प्रतिनिधित्व में परिभाषित आंशिक अद्यतन के अनुसार अपनी स्थिति को संशोधित करता है। यह किसी फ़ाइल या दस्तावेज़ को प्रत्येक प्रकार से स्थानांतरित किए बिना उसका भाग अपडेट करके बैंडविड्थ को बचा सकता है।[55]
सभी सामान्य-उद्देश्य वाले वेब सर्वरों को अल्प से अल्प GET और HEAD विधियों को लागू करने की आवश्यकता होती है, और अन्य सभी विधियों को विनिर्देश द्वारा वैकल्पिक माना जाता है।[48]
अनुरोध विधि | आरएफसी | अनुरोध में पेलोड बॉडी है | प्रतिक्रिया में पेलोड बॉडी है | सुरक्षित | निर्बल | संचित करने योग्य |
---|---|---|---|---|---|---|
GET | RFC 9110 | Optional | Yes | Yes | Yes | Yes |
HEAD | RFC 9110 | Optional | No | Yes | Yes | Yes |
POST | RFC 9110 | Yes | Yes | No | No | Yes |
PUT | RFC 9110 | Yes | Yes | No | Yes | No |
DELETE | RFC 9110 | Optional | Yes | No | Yes | No |
CONNECT | RFC 9110 | Optional | Yes | No | No | No |
OPTIONS | RFC 9110 | Optional | Yes | Yes | Yes | No |
TRACE | RFC 9110 | No | Yes | Yes | Yes | No |
PATCH | RFC 5789 | Yes | Yes | No | No | No |
सुरक्षित विधि
एक अनुरोध विधि सुरक्षित है यदि उस विधि के अनुरोध का सर्वर पर कोई प्रभाव नहीं पड़ता है। GET, HEAD, OPTIONS और TRACE विधियों को सुरक्षित के रूप में परिभाषित किया गया है। दूसरे शब्दों में, कमांड-क्वेरी पृथक्करण|केवल-पढ़ने के लिए सुरक्षित विधियों का उद्देश्य है। चूँकि वे साइड इफेक्ट (कंप्यूटर विज्ञान) को बाहर नहीं करते हैं, जैसे कि सर्वर लॉग में अनुरोध जानकारी को जोड़ना या वेब बैनर को चार्ज करना, क्योंकि परिभाषा के अनुसार क्लाइंट द्वारा उनका अनुरोध नहीं किया जाता है।
इसके विपरीत, POST, PUT, DELETE, CONNECT, और PATCH के विधि सुरक्षित नहीं हैं। वे सर्वर की स्थिति को संशोधित कर सकते हैं या ईमेल भेजने जैसे अन्य प्रभाव डाल सकते हैं। इस तरह के विधि सामान्यतः इंटरनेट बॉट या वेब क्रॉलर के अनुरूप नहीं होते हैं; कुछ जो अनुरूप नहीं हैं, वे संदर्भ या परिणामों की परवाह किए बिना अनुरोध करते हैं।
जीईटी अनुरोधों की निर्धारित सुरक्षा के बावजूद, व्यवहार में सर्वर द्वारा उनकी हैंडलिंग किसी भी तरह से प्रौद्योगिकी रूप से सीमित नहीं है। लापरवाह या जानबूझकर अनियमित प्रोग्रामिंग जीईटी अनुरोधों को सर्वर पर गैर-तुच्छ परिवर्तन करने की अनुमति दे सकती है। वेब कैशिंग, शोध इंजन और अन्य स्वचालित एजेंटों द्वारा सर्वर पर अनपेक्षित परिवर्तन करने पर उत्पन्न होने वाली समस्याओं के कारण इसे हतोत्साहित किया जाता है। उदाहरण के लिए, वेबसाइट https://example.com/article/1234/delete जैसे किसी URL के माध्यम से किसी संसाधन को हटाने की अनुमति दे सकती है, जो, यदि मनमाने ढंग से प्राप्त किया जाता है, यहां तक कि GET का उपयोग करके, बस विस्थापित कर दिया जाएगा लेख।[56] ठीक से कोडित वेबसाइट को इस क्रिया के लिए DELETE या POST विधि की आवश्यकता होगी, जो गैर-दुर्भावनापूर्ण बॉट्स नहीं करेंगे।
अभ्यास में ऐसा होने का उदाहरण अल्पकालिक Google वेब त्वरक बीटा परीक्षण के दौरान था, जो उपयोगकर्ता द्वारा देखे जा रहे पृष्ठ पर मनमाना URL प्रीफ़ेच करता था, जिससे रिकॉर्ड स्वचालित रूप से परिवर्तित जाते थे या सामूहिक रूप से विस्थापित कर दिए जाते थे। व्यापक आलोचना के बाद, बीटा को इसकी पहली रिलीज के कुछ सप्ताह पश्चात ही निलंबित कर दिया गया था।[57][56]
निष्काम विधि
एक अनुरोध विधि उदासीन है यदि उस विधि के साथ अनेक समान अनुरोधों का ही अनुरोध के समान प्रभाव होता है। 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 प्रतिक्रिया संदेश
एक प्रतिक्रिया संदेश सर्वर द्वारा क्लाइंट को उसके पूर्व अनुरोध संदेश के उत्तर के रूप में भेजा जाता है।[note 4]
प्रतिक्रिया सिंटैक्स
एक सर्वर क्लाइंट को प्रतिक्रिया संदेश भेजता है, जिसमें सम्मिलित हैं:[43]
- एक स्टेटस लाइन, जिसमें प्रोटोकॉल संस्करण, स्पेस (विराम चिह्न), HTTP स्टेटस कोड की सूची, अन्य स्पेस, संभावित खाली कारण वाक्यांश, कैरिज रिटर्न और लाइन फीड सम्मिलित है, उदाहरण के लिए:
HTTP/1.1 200 ठीक है
- शून्य या अधिक HTTP प्रतिक्रिया शीर्षलेख फ़ील्ड, प्रत्येक में केस-असंवेदनशील फ़ील्ड नाम, कोलन, वैकल्पिक अग्रणी व्हाइटस्पेस (कंप्यूटर विज्ञान), फ़ील्ड मान, वैकल्पिक अनुगामी व्हाइटस्पेस और कैरिज रिटर्न और लाइन फीड के साथ समाप्त होता है, उदाहरण के लिए :
सामग्री-प्रकार: पाठ/एचटीएमएल
- एक खाली लाइन, जिसमें कैरिज रिटर्न और लाइन फीड सम्मिलित है;
- एक वैकल्पिक HTTP संदेश निकाय।
प्रतिक्रिया स्थिति कोड
HTTP/1.0 में और उसके पश्चात से, HTTP प्रतिक्रिया की पहली पंक्ति को स्थिति रेखा कहा जाता है और इसमें संख्यात्मक स्थिति कोड (जैसे HTTP 404) और शाब्दिक कारण वाक्यांश (जैसे नहीं मिला) सम्मिलित होता है। प्रतिक्रिया स्थिति कोड तीन अंकों का पूर्णांक कोड है जो क्लाइंट के संबंधित अनुरोध को समझने और संतुष्ट करने के सर्वर के प्रयास के परिणाम का प्रतिनिधित्व करता है। जिस तरह से ग्राहक प्रतिक्रिया को संभालता है वह मुख्य रूप से स्थिति कोड पर निर्भर करता है, और दूसरा प्रतिक्रिया हेडर फ़ील्ड पर। ग्राहक सभी पंजीकृत स्थिति कोड को नहीं समझ सकते हैं, लेकिन उन्हें अपनी कक्षा (स्थिति कोड के पूर्वअंक द्वारा दी गई) को समझना चाहिए और उस वर्ग के x00 स्थिति कोड के बराबर होने के लिए गैर-मान्यता प्राप्त स्थिति कोड का इलाज करना चाहिए।
मानक कारण वाक्यांश केवल अनुशंसाएँ हैं, और वेब डेवलपर के विवेक पर स्थानीय समकक्षों के साथ बदले जा सकते हैं। यदि स्थिति कोड किसी समस्या का संकेत देता है, तो उपयोगकर्ता एजेंट समस्या की प्रकृति के विषय में अधिक जानकारी प्रदान करने के लिए उपयोगकर्ता को कारण वाक्यांश प्रदर्शित कर सकता है। मानक भी उपयोगकर्ता एजेंट को कारण वाक्यांश की व्याख्या करने का प्रयास करने की अनुमति देता है, चूँकि यह नासमझी हो सकती है क्योंकि मानक स्पष्ट रूप से निर्दिष्ट करता है कि स्थिति कोड मशीन-पठनीय हैं और कारण वाक्यांश मानव-पठनीय हैं।
स्थिति कोड का प्रथमअंक इसकी कक्षा को परिभाषित करता है:
1XX
(सूचनात्मक)- अनुरोध प्राप्त हुआ, प्रक्रिया जारी है।
2XX
(सफल)- अनुरोध सफलतापूर्वक प्राप्त हुआ, समझा गया और स्वीकार किया गया।
3XX
(पुनर्निर्देशन)- अनुरोध को पूर्ण करने के लिए आगे की कार्रवाई करने की आवश्यकता है।
4XX
(क्लाइंट त्रुटि)- अनुरोध में खराब सिंटैक्स है या इसे पूर्ण नहीं किया जा सकता है।
5XX
(सर्वर त्रुटि)- सर्वर स्पष्ट रूप से मान्य अनुरोध को पूर्ण करने में विफल रहा।
प्रतिक्रिया शीर्षलेख फ़ील्ड
प्रतिक्रिया शीर्षलेख फ़ील्ड सर्वर को प्रतिक्रिया संशोधक के रूप में कार्य करते हुए स्थिति रेखा से परे अतिरिक्त जानकारी पास करने की अनुमति देती है। वे सर्वर के विषय में या लक्षित संसाधन या संबंधित संसाधनों तक और पहुंच के विषय में जानकारी देते हैं।
प्रत्येक प्रतिक्रिया हेडर फ़ील्ड का परिभाषित अर्थ होता है जिसे अनुरोध विधि या प्रतिक्रिया स्थिति कोड के शब्दार्थ द्वारा और अधिक परिष्कृत किया जा सकता है।
HTTP/1.1 अनुरोध/प्रतिक्रिया लेनदेन का उदाहरण
नीचे HTTP/1.1 क्लाइंट और HTTP/1.1 सर्वर के मध्य नमूना HTTP लेनदेन है जो example.com|www.example.com, पोर्ट 80 पर चल रहा है।[note 5][note 6]
क्लाइंट अनुरोध
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
एक ग्राहक अनुरोध (अनुरोध पंक्ति के इस मामले में और कुछ शीर्षलेख सम्मिलित हैं जिन्हें केवल "Host: hostname"
हेडर) के पश्चात खाली लाइन होती है, जिससे कि अनुरोध लाइन के दोहरे सिरे के साथ समाप्त हो, प्रत्येक कैरिज रिटर्न के रूप में और उसके पश्चात लाइन फीड हो। "Host: hostname"
e> शीर्ष लेख मान विभिन्न डोमेन की नामांकन प्रणाली नामों के मध्य एकल आईपी पता साझा करने के मध्य अंतर करता है, जिससे नाम-आधारित वर्चुअल होस्टिंग की अनुमति मिलती है। जबकि HTTP/1.0 में वैकल्पिक है, HTTP/1.1 में यह अनिवार्य है। (ए / (स्लैश) सामान्यतः वेबसर्वर डायरेक्टरी इंडेक्स|/index.html फ़ाइल लाएगा यदि कोई है।)
सर्वर प्रतिक्रिया
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 155
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World, this is a very simple HTML document.</p>
</body>
</html>
HTTP ETag (एंटिटी टैग) हेडर फ़ील्ड का उपयोग यह निर्धारित करने के लिए किया जाता है कि अनुरोधित संसाधन का कैश्ड संस्करण सर्वर पर संसाधन के वर्तमान संस्करण के समान है या नहीं। "Content-Type"
HTTP संदेश द्वारा बताए गए डेटा के इंटरनेट मीडिया प्रकार को निर्दिष्ट करता है, जबकि "Content-Length"
बाइट्स में इसकी लंबाई इंगित करता है। HTTP/1.1 वेबसर्वर फ़ील्ड सेट करके दस्तावेज़ की कुछ बाइट श्रेणियों के अनुरोधों का जवाब देने की अपनी क्षमता प्रकाशित करता है "Accept-Ranges: bytes"
. यह उपयोगी है, यदि ग्राहक को केवल कुछ भाग ही चाहिए[58] सर्वर द्वारा भेजे गए संसाधन का, जिसे बाइट सर्विंग कहा जाता है। कब "Connection: close"
भेजा जाता है, इसका मतलब है कि वेब सर्वर इस प्रतिक्रिया के हस्तांतरण के अंत के तुरंत पश्चात ट्रांसमिशन कंट्रोल प्रोटोकॉल कनेक्शन बंद कर देगा।[18]
अधिकांश हेडर लाइन वैकल्पिक हैं लेकिन कुछ अनिवार्य हैं। जब हेडर "Content-Length: number"
इकाई निकाय के साथ प्रतिक्रिया में गुम है तो इसे HTTP/1.0 में त्रुटि माना जाना चाहिए लेकिन हेडर होने पर HTTP/1.1 में यह त्रुटि नहीं हो सकती है "Transfer-Encoding: chunked"
उपस्थित है। चंक्ड ट्रांसफर एन्कोडिंग सामग्री के अंत को चिह्नित करने के लिए 0 के चंक आकार का उपयोग करता है। HTTP/1.0 के कुछ पुराने कार्यान्वयनों ने हेडर को छोड़ दिया "Content-Length"
जब प्रतिक्रिया की प्रारंभ में शरीर इकाई की लंबाई ज्ञात नहीं थी और इसलिए क्लाइंट को डेटा का स्थानांतरण तब तक जारी रहा जब तक कि सर्वर ने सॉकेट बंद नहीं कर दिया।
ए "Content-Encoding: gzip"
क्लाइंट को सूचित करने के लिए उपयोग किया जा सकता है कि ट्रांसमिटेड डेटा का बॉडी एंटिटी पार्ट gzip एल्गोरिथम द्वारा कंप्रेस किया गया है।
एन्क्रिप्टेड कनेक्शन
एन्क्रिप्टेड HTTP कनेक्शन स्थापित करने का सबसे लोकप्रिय विधि HTTPS है।[59] एन्क्रिप्टेड HTTP कनेक्शन स्थापित करने के लिए दो अन्य विधि भी उपस्थित हैं: सुरक्षित हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल, और टीएलएस में अपग्रेड निर्दिष्ट करने के लिए HTTP/1.1 अपग्रेड हेडर का उपयोग करना। चूँकि , इन दोनों के लिए ब्राउज़र समर्थन लगभग न के बराबर है।[60][61][62]
समान प्रोटोकॉल
- गोफर (प्रोटोकॉल) सामग्री वितरण प्रोटोकॉल है जिसे 1990 के दशक की प्रारंभ में HTTP द्वारा विस्थापित किया गया था।
- SPDY प्रोटोकॉल, Google द्वारा विकसित HTTP का विकल्प है, जिसका स्थान HTTP/2 ने ले लिया है।
- मिथुन (प्रोटोकॉल) गोफर-प्रेरित प्रोटोकॉल है जो गोपनीयता से संबंधित सुविधाओं को अनिवार्य करता है।
यह भी देखें
HTTP |
---|
Request methods |
Header fields |
Response status codes |
Security access control methods |
Security vulnerabilities |
- अंतर्ग्रहीय फाइल प्रणाली - http की जगह ले सकता है
- फ़ाइल स्थानांतरण प्रोटोकॉल की तुलना
- विवश अनुप्रयोग प्रोटोकॉल - HTTP के लिए शब्दार्थ के समान प्रोटोकॉल लेकिन सीमित प्रसंस्करण क्षमता वाले उपकरणों के लिए लक्षित UDP या UDP जैसे संदेशों का उपयोग किया जाता है; HTTP और इंटरनेट मीडिया प्रकार और वेब लिंकिंग जैसी अन्य इंटरनेट अवधारणाओं का पुन: उपयोग करता है (RFC 5988)[63]
- सामग्री बातचीत
- डाइजेस्ट एक्सेस ऑथेंटिकेशन
- HTTP संपीड़न
- HTTP/2 - IETF के हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (httpbis) वर्किंग ग्रुप द्वारा विकसित किया गया[64]
- HTTP शीर्षलेख फ़ील्ड की सूची
- HTTP स्थिति कोड की सूची
- प्रतिनिधित्वात्मक राज्य स्थानांतरण (REST)
- भिन्न वस्तु
- वेब कैश
- वेबसॉकेट
टिप्पणियाँ
- ↑ In practice, these streams are used as multiple TCP/IP sub-connections to multiplex concurrent requests/responses, thus greatly reducing the number of real TCP/IP connections on server side, from 2..8 per client to 1, and allowing many more clients to be served at once.
- ↑ In 2022, HTTP/0.9 support has not been officially completely deprecated and is still present in many web servers and browsers (for server responses only), even if usually disabled. It is unclear how long it will take to decommission HTTP/0.9.
- ↑ Since late 1996, some developers of popular HTTP/1.0 browsers and servers (specially those who had planned support for HTTP/1.1 too), started to deploy (as an unofficial extension) a sort of keep-alive-mechanism (by using new HTTP headers) in order to keep the TCP/IP connection open for more than a request/response pair and so to speed up the exchange of multiple requests/responses.[29]
- ↑ 4.0 4.1 HTTP/2 and HTTP/3 have a different representation for HTTP methods and headers.
- ↑ HTTP/1.0 has the same messages except for a few missing headers.
- ↑ HTTP/2 and HTTP/3 use the same request / response mechanism but with different representations for HTTP headers.
संदर्भ
- ↑ 1.0 1.1 1.2 1.3 Fielding, R.; Nottingham, M.; Reschke, J. (June 2022). HTTP शब्दार्थ. IETF. doi:10.17487/RFC9110. RFC 9110.
- ↑ 2.0 2.1 Tim Berner-Lee (1992). "1992 में परिभाषित मूल HTTP". www.w3.org (in English). World Wide Web Consortium. Retrieved 2021-10-19.
- ↑ "वेबसाइटों के लिए डिफ़ॉल्ट प्रोटोकॉल https के उपयोग के आंकड़े". w3techs.com. Retrieved 2022-10-16.
- ↑ "Usage Statistics of HTTP/2 for websites". w3techs.com. Retrieved 2022-12-02.
- ↑ "Can I use... Support tables for HTML5, CSS3, etc". caniuse.com. Retrieved 2022-10-16.
- ↑ "ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) एप्लीकेशन-लेयर प्रोटोकॉल नेगोशिएशन एक्सटेंशन". IETF. July 2014. RFC 7301.
- ↑ Belshe, M.; Peon, R.; Thomson, M. "Hypertext Transfer Protocol Version 2, Use of TLS Features". Archived from the original on 2013-07-15. Retrieved 2015-02-10.
- ↑ Benjamin, David. "Using TLS 1.3 with HTTP/2". tools.ietf.org (in English). Retrieved 2020-06-02.
This lowers the barrier for deploying TLS 1.3, a major security improvement over TLS 1.2.
- ↑ "HTTP/3" (in English). Retrieved 2022-06-06.
- ↑ "Usage Statistics of HTTP/3 for websites". w3techs.com. Retrieved 2022-10-16.
- ↑ "Can I use... Support tables for HTML5, CSS3, etc". caniuse.com. Retrieved 2022-10-16.
- ↑ Cimpanu, Catalin (26 September 2019). "Cloudflare, Google Chrome, and Firefox add HTTP/3 support". ZDNet. Retrieved 27 September 2019.
- ↑ "HTTP/3: the past, the present, and the future". The Cloudflare Blog (in English). 2019-09-26. Retrieved 2019-10-30.
- ↑ "Firefox Nightly supports HTTP 3 - General - Cloudflare Community". 2019-11-19. Retrieved 2020-01-23.
- ↑ "HTTP/3 is Fast". Request Metrics (in English). Retrieved 2022-07-01.
- ↑ 16.0 16.1 16.2 "Connections, Clients, and Servers". RFC 9110, HTTP Semantics. sec. 3.3. doi:10.17487/RFC9110. RFC 9110.
- ↑ "Overall Operation". RFC 1945. pp. 6–8. sec. 1.3. doi:10.17487/RFC1945. RFC 1945.
- ↑ 18.0 18.1 18.2 "Connection Management: Establishment". RFC 9112, HTTP/1.1. sec. 9.1. doi:10.17487/RFC9112. RFC 9112.
- ↑ "Connection Management: Persistence". RFC 9112, HTTP/1.1. sec. 9.3. doi:10.17487/RFC9112. RFC 9112.
- ↑ "क्लासिक HTTP दस्तावेज़". W3.org. 1998-05-14. Retrieved 2010-08-01.
- ↑ "HTTP/2 Protocol Overview". RFC 9113, HTTP/2). sec. 2. doi:10.17487/RFC7540. RFC 7540.
- ↑ "वेब का आविष्कार, वेब इतिहास, वेब का आविष्कार किसने किया, टिम बर्नर्स-ली, रॉबर्ट कैलियाउ, सर्न, पहला वेब सर्वर". LivingInternet (in English). Retrieved 2021-08-11.
- ↑ Berners-Lee, Tim (1990-10-02). "daemon.c - TCP/IP based server for HyperText". www.w3.org. Retrieved 2021-08-11.
- ↑ Berners-Lee, Tim. "हाइपरटेक्स्ट परहस्त शिष्टाचार". World Wide Web Consortium. Retrieved 31 August 2010.
- ↑ 25.0 25.1 Cite error: Invalid
<ref>
tag; no text was provided for refs namedHTTP/0.9-specifications
- ↑ Raggett, Dave. "डेव रैगेट का बायो". World Wide Web Consortium. Retrieved 11 June 2010.
- ↑ Raggett, Dave; Berners-Lee, Tim. "हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल वर्किंग ग्रुप". World Wide Web Consortium. Retrieved 29 September 2010.
- ↑ Raggett, Dave. "HTTP डब्ल्यूजी योजनाएं". World Wide Web Consortium. Retrieved 29 September 2010.
- ↑ 29.0 29.1 David Gourley; Brian Totty; Marjorie Sayer; Anshu Aggarwal; Sailu Reddy (2002). HTTP: The Definitive Guide. (excerpt of chapter: "Persistent Connections") (in English). O'Reilly Media, inc. ISBN 9781565925090. Retrieved 2021-10-18.
- ↑ "HTTP/1.1". Webcom.com Glossary entry. Archived from the original on 2001-11-21. Retrieved 2009-05-29.
- ↑ "एचटीटीपी-एनजी वर्किंग ग्रुप". www.w3.org (in English). World Wide Web Consortium. 1997. Retrieved 2021-10-19.
- ↑ Web Administrator (2007). "HTTP वर्किंग ग्रुप". httpwg.org (in English). IETF. Retrieved 2021-10-19.
- ↑ Web Administrator (2007). "HTTP Working Group: charter httpbis". datatracker.ietf.org (in English). IETF. Retrieved 2021-10-19.
- ↑ "एसपीडीवाई: तेज़ वेब के लिए एक प्रयोगात्मक प्रोटोकॉल". dev.chromium.org (in English). Google. 2009-11-01. Retrieved 2021-10-19.
- ↑ IESG Secretary (2012-03-19). "WG Action: RECHARTER: Hypertext Transfer Protocol Bis (httpbis)" (in English). IETF; HTTP WG. Retrieved 2021-10-19.
- ↑ Ilya Grigorik; Surma (2019-09-03). "उच्च निष्पादन ब्राउज़र नेटवर्किंग: HTTP/2 का परिचय". developers.google.com (in English). Google Inc. Retrieved 2021-10-19.
- ↑ "Appendix-A: HTTP Version History". RFC 7230, HTTP/1.1: Message Syntax and Routing. p. 78. sec. A. doi:10.17487/RFC7230. RFC 7230.
- ↑ Matt Menke (2016-06-30). "बहिष्कृत करने और निकालने का इरादा: HTTP/0.9 समर्थन". groups.google.com (in English). Retrieved 2021-10-15.
- ↑ "HTTP/3" (in English). Retrieved 2022-06-06.
- ↑ "http URI Scheme". RFC 9110, HTTP Semantics. sec. 4.2.1. doi:10.17487/RFC9110. RFC 9110.
- ↑ "https URI Scheme". RFC 9110, HTTP Semantics. sec. 4.2.2. doi:10.17487/RFC9110. RFC 9110.
- ↑ Lee, Wei-Bin; Chen, Hsing-Bai; Chang, Shun-Shyan; Chen, Tzung-Her (2019-01-25). "स्व-सत्यापन के साथ HTTP कुकीज़ के लिए सुरक्षित और कुशल सुरक्षा". International Journal of Communication Systems (in English). 32 (2): e3857. doi:10.1002/dac.3857. S2CID 59524143.
- ↑ 43.0 43.1 "Message format". RFC 9112: HTTP/1.1. sec. 2.1. doi:10.17487/RFC9112. RFC 9112.
- ↑ "अपाचे वीक। एचटीटीपी/1.1". 090502 apacheweek.com
- ↑ Berners-Lee, Tim; Fielding, Roy T.; Nielsen, Henrik Frystyk. "Method Definitions". Hypertext Transfer Protocol – HTTP/1.0. IETF. pp. 30–32. sec. 8. doi:10.17487/RFC1945. RFC 1945.
- ↑ "Method Definitions". RFC 2616. pp. 51–57. sec. 9. doi:10.17487/RFC2616. RFC 2616.
- ↑ "Request Line". RFC 9112, HTTP/1.1. sec. 3. doi:10.17487/RFC9112. RFC 9112.
- ↑ 48.0 48.1 "Methods: Overview". RFC 9110, HTTP Semantics. sec. 9.1. doi:10.17487/RFC9110. RFC 9110.
- ↑ "Header Fields". RFC 9110, HTTP Semantics. sec. 6.3. doi:10.17487/RFC9110. RFC 9110.
- ↑ Jacobs, Ian (2004). "यूआरआई, एड्रेसेबिलिटी, और एचटीटीपी जीईटी और पोस्ट का उपयोग". Technical Architecture Group finding. W3C. Retrieved 26 September 2010.
- ↑ "POST". RFC 9110, HTTP Semantics. sec. 9.3.3. doi:10.17487/RFC9110. RFC 9110.
- ↑ "PUT". RFC 9110, HTTP Semantics. sec. 9.3.4. doi:10.17487/RFC9110. RFC 9110.
- ↑ "CONNECT". RFC 9110, HTTP Semantics. sec. 9.3.6. doi:10.17487/RFC9110. RFC 9110.
- ↑ "Vulnerability Note VU#150227: HTTP proxy default configurations allow arbitrary TCP connections". US-CERT. 2002-05-17. Retrieved 2007-05-10.
- ↑ Dusseault, Lisa; Snell, James M. (March 2010). HTTP के लिए पैच विधि. IETF. doi:10.17487/RFC5789. RFC 5789.
- ↑ 56.0 56.1 Ediger, Brad (2007-12-21). Advanced Rails: Building Industrial-Strength Web Apps in Record Time. O'Reilly Media, Inc. p. 188. ISBN 978-0596519728.
A common mistake is to use GET for an action that updates a resource. [...] This problem came into the Rails public eye in 2005, when the Google Web Accelerator was released.
- ↑ Cantrell, Christian (2005-06-01). "What Have We Learned From the Google Web Accelerator?". Adobe Blogs. Adobe. Archived from the original on 2017-08-19. Retrieved 2018-11-19.
- ↑ Luotonen, Ari; Franks, John (February 22, 1996). HTTP के लिए बाइट रेंज रिट्रीवल एक्सटेंशन. IETF. I-D draft-ietf-http-range-retrieval-00.
- ↑ Canavan, John (2001). नेटवर्किंग सुरक्षा के मूल तत्व. Norwood, MA: Artech House. pp. 82–83. ISBN 9781580531764.
- ↑ Zalewski, Michal. "ब्राउज़र सुरक्षा पुस्तिका". Retrieved 30 April 2015.
- ↑ "Chromium Issue 4527: implement RFC 2817: Upgrading to TLS Within HTTP/1.1". Retrieved 30 April 2015.
- ↑ "Mozilla Bug 276813 – [RFE] Support RFC 2817 / TLS Upgrade for HTTP 1.1". Retrieved 30 April 2015.
- ↑ Nottingham, Mark (October 2010). वेब लिंकिंग. IETF. doi:10.17487/RFC5988. RFC 5988.
- ↑ "Hypertext Transfer Protocol Bis (httpbis) – Charter". IETF. 2012.
बाहरी संबंध
- No URL found. Please specify a URL here or add one to Wikidata.
- IETF HTTP Working Group on GitHub
- "Change History for HTTP". W3.org. Retrieved 2010-08-01. A detailed technical history of HTTP.
- "Design Issues for HTTP". W3.org. Retrieved 2010-08-01. Design Issues by Berners-Lee when he was designing the protocol.