2009-09-22 7 views
46

मैंने w3.org spec on the 'HEAD' verb पढ़ा है, और मुझे लगता है कि मुझे कुछ याद आ रहा है। मैं नहीं देख सकता कि यह कैसे उपयोगी होगा।क्या एचटीटीपी 'हेड' क्रिया वेब विकास में उपयोगी है?

क्या वेब विकास में HTTP 'HEAD' क्रिया उपयोगी है?

यदि हां, तो कैसे?

उत्तर

47

RFC2616 से:

इस विधि (सिर) इकाई-शरीर में ही स्थानांतरित बिना इकाई अनुरोध के अनुसार लगाए गए के बारे में metainformation प्राप्त करने के लिए इस्तेमाल किया जा सकता। इस विधि का उपयोग अक्सर वैधता के लिए हाइपरटेक्स्ट लिंक, पहुंच क्षमता, और हाल ही में संशोधन के लिए किया जाता है।

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

इसके अलावा, एक हेड अनुरोध सर्वर सेटअप (चाहे वह आईआईएस/अपाचे इत्यादि) के बारे में कुछ जानकारी प्रदान करेगा, जब तक सर्वर को मुखौटा नहीं किया जाता था; बेशक, यह सभी प्रतिक्रियाओं में उपलब्ध है, लेकिन सिर को प्राथमिकता दी जाती है, खासकर जब आप प्रतिक्रिया के आकार को नहीं जानते हैं। यह निर्धारित करने का सबसे आसान तरीका है कि कोई साइट ऊपर या नीचे है या नहीं; फिर संदेश निकाय की अपरिहार्यता आदर्श आदर्श उम्मीदवार बनाती है।

मुझे इस बारे में निश्चित नहीं है, लेकिन आरएसएस/एटीओएम फ़ीड पाठक यह सुनिश्चित करने के लिए जीएटी पर हेड का उपयोग करेंगे कि फ़ीड की सामग्री बदल गई है या नहीं।

+2

उदाहरण जोड़ने के लिए: मैं एक "ग्राहक" एपीआई बना रहा हूं जो एक आरईएसटी एपीआई पर एकाधिक ऐप्स को डेटा प्रदान करता है। ऐप्स नियमित रूप से जांचना चाहते हैं कि ग्राहक को अपडेट किया गया है या नहीं, लेकिन हम सभी डीबी में शामिल नहीं होना चाहते हैं या पूरे ग्राहक को तार पर फिर से भेजना नहीं चाहते हैं। इसके बजाए, हमने एपीआई को बार-बार/ग्राहक/एक्सवाईजेड पर एक हेड अनुरोध के साथ मारा, जिससे हमें पता चल गया कि आखिरी बार बदलाव आया है। –

+0

एक और उदाहरण जोड़ना चाहते हैं, भले ही यह एक पुरानी पोस्ट है। यदि आप देखना चाहते हैं कि कोई दस्तावेज़ मौजूद है या नहीं, तो ElasticSearch HEAD कमांड का उपयोग करने की अनुशंसा करता है। –

+0

आप यह देखने के लिए हेड का उपयोग नहीं करते कि कोई दस्तावेज़ बदल गया है या नहीं, आप 'अगर-संशोधित-चूंकि' या 'यदि-कोई नहीं-मैच' का उपयोग करते हैं (उदाहरण के लिए "304 संशोधित नहीं" प्रतिक्रियाओं के लिए अपने ब्राउज़र नेटवर्क लॉग में एक नज़र डालें इस पृष्ठ को पुनः लोड करना)। और HEAD (कम से कम सैद्धांतिक रूप से) HTTP/1.1 के रूप में पूरी तरह से अनावश्यक है, जो 'रेंज: बाइट्स = 0-0' की अनुमति देता है। –

3

यह मुख्य रूप से ब्राउज़र और प्रॉक्सी के लिए यह निर्धारित करने के लिए है कि क्या वे पूरी चीज़ को डाउनलोड किए बिना वेब दस्तावेज़ की कैश की गई प्रतिलिपि का उपयोग कर सकते हैं (जो कैश के उद्देश्य को हरा देगा)।

+7

क्या कोई मौजूदा ब्राउज़र ऐसा करता है? मैंने सोचा कि वे सिर्फ "जीईटी" का उपयोग करेंगे, लेकिन "अगर-संशोधित-चूंकि" अनुरोध शीर्षलेख शामिल करेंगे। – David

+0

डुनो। टैम्पर डेटा में जो मैं देख सकता हूं, फ़ायरफ़ॉक्स निश्चित रूप से नहीं करता है। मुझे लगता है कि यह अधिक उपयोगी होगा जब संशोधित समय से अधिक मानदंड हैं, जो ब्राउज़र से अधिक प्रॉक्सी होंगे। – chaos

+0

डेविड सही है, जब तक कोई ऐसा ब्राउज़र न हो जो ऐसा करता है।यह हानिकारक है क्योंकि प्रतिक्रिया इंगित करेगी कि ग्राहक को सामग्री डाउनलोड करनी चाहिए या नहीं, जिसके परिणामस्वरूप 2 अनुरोधों के बजाय 2 अनुरोध हैं। हालांकि अन्य HTTP ग्राहकों के लिए शायद उपयोगी है। –

22

कुछ बड़े डेटा के HTTP PUT/POST करने से पहले, HTTP HEAD का उपयोग वेब सर्वर से पूर्व-प्रमाणीकृत करने के लिए भी किया जा सकता है। पहले HEAD अनुरोध के बिना, आप बड़े डेटा को वेब सर्वर पर दो बार भेज देंगे (क्योंकि पहला अनुरोध WWW- प्रमाणीकृत हेडर के साथ 401 अनधिकृत प्रतिवाद लौटाएगा)।

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