HTTP की छिपी विशेषताएं


85

HTTP की कौन सी छिपी हुई विशेषताएँ आपको ध्यान देने योग्य हैं?

छिपी हुई विशेषताओं से मेरा अभिप्राय उन विशेषताओं से है जो पहले से ही मानक का हिस्सा हैं, लेकिन व्यापक रूप से अज्ञात या अप्रयुक्त हैं।

कृपया प्रति उत्तर केवल एक सुविधा।

जवाबों:


124

यह 418 हो गया है मैं एक चायदानी स्टेटस कोड, हाइपर टेक्स्ट कॉफ़ी पॉट कंट्रोल प्रोटोकॉल (HTTP का विस्तार) का हिस्सा हूं । मुझे हर बार हँसाता है।

२.३.२ ४१ a मैं एक चायदानी हूँ

एक चायदानी के साथ कॉफी काढ़ा करने का कोई भी प्रयास "418 मैं चायदानी" त्रुटि कोड में परिणाम होना चाहिए। परिणामी निकाय निकाय छोटा और मोटा होना चाहिए।


6
यह बहुत अच्छा है!
जोश

3
मैंने वास्तव में इस स्थिति को स्क्रिप्ट में तब लागू किया है जब कोई अन्य स्थिति उपयुक्त नहीं है।
आंखों की रोशनी

4
RFC से: "परिणामी निकाय निकाय कम और मोटा होना चाहिए।"
पिस्कॉर ने

2
मैंने अपना खुद का HTTP सर्वर लिखा और इसे लागू करना सुनिश्चित किया।
मैट जॉइनर

क्या यह एक वास्तविक प्रोटोकॉल नहीं था जो उन्होंने वहां कॉफी मशीन को कमांड भेजने के लिए लिखा था, मुझे यकीन है कि मैंने कहीं पढ़ा था! - उन्होंने इस प्रोटोकॉल के माध्यम से आदेशों को स्वीकार करने के लिए एक कॉफी मशीन का निर्माण किया, इसलिए वास्तव में इसका एक वैध प्रोटोकॉल है
रॉबर्टपीट

48

तथ्य यह है कि रेफर को गलत तरीके से याद किया गया था और यह निर्णय लिया गया था कि गलत वर्तनी को रखा जाना चाहिए।


42

स्पष्ट उत्तर: PUT, DELETE, TRACE, OPTIONS, CONNECT के तरीके

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


1
अच्छा जवाब, क्या आप सभी तरीकों के बारे में अधिक जानकारी प्रदान कर सकते हैं?
लुई

2
आप इसके बारे में विभिन्न साइटों, जैसे en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
Martijn

1
बदकिस्मत, कितने ब्राउज़र शोध के तरीकों का समर्थन करते हैं? (मुझे पता है, यह एक दया है)
पास्कल क्यूवाई

हर कोई इन सूचियों में PATCH को क्यों शामिल करता है?
टोबिब

29

क्या कभी किसी ने 402 भुगतान आवश्यक देखा है ?


17
हाँ। HTTP <-> एसएमएस गेटवे में। यदि आप प्री-पेड क्रेडिट से बाहर निकलते हैं, तो आपको 402 प्रतिक्रियाएँ मिलनी शुरू हो जाएँगी।
कोर्नेल

26
@ zildjohn01: इसका मतलब है कि ... नाटकीय ठहराव ... हम भविष्य में रह रहे हैं! ;)
पिस्कवर ने बिल्डिंग

6
@ ग्राहक: शानदार अवलोकन। मैं यह भी बताता हूं कि मैं इस भविष्य को अस्वीकार करता हूं, और यह दयनीय सॉफ्टवेयर स्टैक है।
मैट जॉइनर

3
"भविष्य पहले से ही यहां है, यह केवल समान रूप से वितरित नहीं है।"
XTL

25

204 कोई सामग्री नहीं

मैंने सोचा था कि 204 सिर्फ अगर आपके पास प्रदर्शित करने के लिए कोई सामग्री नहीं है, लेकिन कल्पना ऐसी है कि अतिरिक्त व्यवहार है कि उपयोगकर्ता एजेंट "अपने दस्तावेज़ दृश्य को नहीं बदलेगा।"

HOWTO के अनुसार : AJAX के लिए एक HTTP 204 (कोई सामग्री) वापस करने के लिए अपाचे को कॉन्फ़िगर करें

FWIW, Google वास्तव में कुछ ऐसा ही करता है। जब भी कोई उपयोगकर्ता अपने खोज परिणामों में किसी लिंक पर क्लिक करता है, तो Google क्लिक रिकॉर्ड करने के लिए स्वयं को पिंग करता है; पिंग से प्रतिक्रिया कोड एक HTTP 204 है।

इसके अलावा, 204 कोई सामग्री नहीं प्रस्तावित है कि यह "वेब बग" या "बीकन" के लिए एक अच्छी तकनीक है यदि आप नेटवर्क ट्रैफ़िक के हर अंतिम बाइट पर बचत करना चाहते हैं।


17

रेस्पोंस कोड 410 Gone :

(...) सर्वर मालिकों की इच्छा है कि उस संसाधन के दूरस्थ लिंक हटा दिए जाएं। (...)

वेब स्पाइडर (सबसे विशेष रूप से Google) एक पृष्ठ को डी-इंडेक्स करेगा (आमतौर पर अगले क्रॉल पर) जो 410 लौटाना शुरू करता है।


16

डायनामिक सामग्री में Last_Modified या ETag हेडर का उपयोग करें

कई बार आपके पास गतिशील सामग्री होती है जो बड़ी और / या महंगी हो सकती है और यह अनुरोध से अनुरोध में परिवर्तित नहीं हो सकती है। आप अपनी उत्पन्न प्रतिक्रिया में एक Last_Modified या ETag हेडर जोड़ सकते हैं।

अपने महंगे डायनामिक कोड के शीर्ष पर आप यह निर्धारित करने के लिए कि क्या सामग्री अनुरोधकर्ता अभी भी चालू है, यह निर्धारित करने के लिए आप if_Modified_Since या if_None_Match का उपयोग कर सकते हैं। यदि यह प्रतिक्रिया स्थिति को "304 अनमॉडिफाइड" में बदल देता है और अनुरोध को समाप्त करता है।

कुछ सर्वर-साइड प्रौद्योगिकियाँ इस तरह की सुविधाएँ औपचारिक रूप से प्रदान करती हैं, लेकिन आप उपरोक्त एएसपी-क्लासिक में भी कर सकते हैं।

ध्यान दें कि यह कैश-कंट्रोल सेट करने से भिन्न होता है, शीर्षकों को समाप्त करता है जिसमें यह सुनिश्चित करता है कि ग्राहक के पास अनुरोध पर नवीनतम जानकारी हमेशा हो।


13

आप करने के लिए अनुरोध कर सकते हैं फिर से शुरू एक (बड़े) HTTP प्रतिसाद (जैसे फ़ाइल डाउनलोड) का उपयोग कर Rangeऔर If-Rangeक्रमशः निर्दिष्ट बाइट रेंज और अद्वितीय फ़ाइल पहचानकर्ता या फ़ाइल संशोधन टाइमस्टैम्प के साथ अनुरोध हेडर। यह संभव है यदि सर्वर ने भेजा है Accept-Ranges: bytesऔरETagLast-Modified प्रारंभिक प्रतिक्रिया पर क्रमशः प्रतिक्रिया के साथ या हेडर कि सर्वर बाइट रेंज अनुरोधों, अद्वितीय फ़ाइल पहचानकर्ता और फ़ाइल संशोधन टाइमस्टैम्प का समर्थन करता है।

प्रारंभिक प्रतिक्रिया (जैसे) देख सकती है ETag यह आमतौर पर फ़ाइल नाम, आकार और अंतिम संशोधन टाइमस्टैम्प से बना होता है):

Accept-Ranges: bytes
ETag: file.ext_1234_1234567890
Content-Range: bytes 0-1233/1234

जब डाउनलोड 1KB (1024 बाइट्स) के लिए डाउनलोड हो जाता है, तो क्लाइंट इसे निम्नानुसार फिर से शुरू कर सकता है:

If-Range: file.ext_1234_1234567890
Range: bytes=1024-

इस प्रतिक्रिया को शरीर में उपयुक्त बाइट्स के साथ वापस करना चाहिए:

Accept-Ranges: bytes
ETag: file.ext_1234_1234567890
Content-Range: bytes 1024-1233/1234

1Mbyte = 1024 kbytes, 1kbyte = 1024 बाइट्स, जो बनाता है 1Mbyte = 1024 * 1024 बाइट्स
Maerlyn

12

आराम एक इंटरफ़ेस प्रोटोकॉल के रूप में HTTP को अपनी सीमा में धकेलने की कोशिश करता है।

यह एक छिपी हुई विशेषता नहीं है , लेकिन अच्छी तरह से परिभाषित ReST API को देखने से किसी को इस बात पर अच्छी पकड़ मिल सकती है कि HTTP कैसे काम करने के लिए है और HTTP विधियों, स्थिति कोड और हेडर के सरल संयोजन से क्या हासिल किया जा सकता है के अद्भुत उदाहरण मिलेंगे और मेंढक।



8

प्रोटोकॉल आपको अपने स्वयं के कस्टम-फ़ील्ड को परिभाषित करने की अनुमति देता है। यदि आप इसके लिए कुकीज़ का उपयोग नहीं करना चाहते हैं तो इनका उपयोग अन्य जानकारी को ले जाने के लिए किया जा सकता है।


1
मुझे यकीन है कि पता नहीं था!
netrox

6

HTTP 100 (जारी रखें) स्थिति

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

कुछ मामलों में, यह ग्राहक को शरीर भेजने के लिए अनुचित या अत्यधिक अक्षम हो सकता है यदि सर्वर शरीर को देखे बिना संदेश को अस्वीकार कर देगा

दुष्ट ग्राहकों .. और / या जहां बैंडविड्थ से यातायात से बचने के लिए इस्तेमाल किया जा सकता है एक कीमती वस्तु है।

हालाँकि, इस सुविधा के पूर्ण उपयोग के लिए HTTP1.1 क्लाइंट, सर्वर और प्रॉक्सी के लिए कुछ मानदंड हैं। HTTP कनेक्शंस पर आगे पढ़ने के लिए HTTP / 1.1 RFC 2616 देखें ।


3

स्थिति कोड :

  • जब यूआरआई http://www.domain.invalid/index.php?id=44 कहा जाता है, अगर क्वेरी ( id=44) पुनः स्रोत नहीं लौटा सकती है , तो एक स्थिति कोड क्यों नहीं लौटाया जाता है404 ?
  • जब यूआरआई http://www.domain.invalid/index.php?id=foo कहा जाता है जबकि idकेवल पूर्णांक स्वीकार करता है, तो एक स्थिति कोड क्यों नहीं लौटाया जाता है400 ?
  • जब आप गलत लॉगिन / पासवर्ड दर्ज करते हैं, तो लगभग सभी वेब एप्लिकेशन स्टेटस कोड के साथ "प्रमाणीकरण विफल" जैसे संदेश को वापस कर देते हैं 200(ठीक है, कोई बात नहीं, आप इसे अच्छी तरह से करते हैं) का उदाहरण है 401?

हां, स्थिति कोड कुछ वेब डेवलपर्स के लिए HTTP की एक तरह की गुप्त कार्यक्षमता है ... लेकिन मुझे आश्चर्य है कि अगर इस प्रोटोकॉल के सभी "सुविधाओं" का सबसे मनोगत इसका RFC नहीं है !


2
मुझे लगता 401है कि यह केवल HTTP-Authentication के लिए है न कि अन्य प्रकार के लिए। Afaik यह एक ब्राउज़र पासवर्ड के लिए उपयोगकर्ता से पूछने के लिए सबसे ब्राउज़र का कारण बनता है।
कोड इनचॉस

तुम सही हो, और यह बात है! यहाँ HTTP की एक अन्य "छिपी हुई" विशेषता है: HTTP-Authentication... ^ क्या पहिया को सुदृढ़ करने के बजाय इसका उपयोग करना इतना कठिन है?
पास्कल क्यूवाई

1
@G। Qyy: एक वेब एप्लिकेशन के लिए, यह एक बड़ा अंतर रखता है कि क्या इसका उपयोगकर्ता डेटाबेस कुछ SQL डेटाबेस में संग्रहीत है, जिसे यह आसानी से हेरफेर कर सकता है, या कुछ (काफी स्थिर) वेबसर्वर कॉन्फ़िगरेशन फ़ाइल में, जैसे कि अपाचे की .htaccessफाइलें - जो शायद केवल एक है वेबमास्टर अपडेट कर सकते हैं। इस प्रकार एक एप्लिकेशन के उपयोगकर्ता अधिकारों और लॉगिन / लॉगऑफ़ के प्रबंधन के लिए HTTP ऑर्मेंट वास्तव में बहुत फिट नहीं है।
stakx -

4
@stakx: MySQL ( howtoforge.com/mod_auth_mysql_apache2_debian ), LDAP या अन्य को इसका उपयोग करके स्टोर करना आसान है HTTP-Authentication, और यहां तक ​​कि PHP को संभालने में सक्षम है HTTP-Authentication( php.net/manual/en/features.http-auth.php )। यदि आप एक वेब डेवलपर हैं, तो आपको सुरक्षा कारणों से केवल सर्वर प्रशासन की मूल बातें प्राप्त करनी होंगी! जैसा कि वेब डेवलपर के पास वेबमास्टर / sysadmin कौशल होना चाहिए, वह आसानी से इस कार्य को कर सकता है।
पास्कल क्यूवाई

1
लेकिन वैसे भी यह मेरे जवाब के बारे में नहीं है: मेरे लिए मुख्य समस्या वेब एप्लिकेशन द्वारा लौटाए गए लगभग व्यवस्थित औसत स्टेटस-कोड्स की बनी हुई है, यहां तक ​​कि HTTP प्रमाणीकरण को भी अलग रखा गया है।
पास्कल क्यूवाई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.