[http-headers] 403 निषिद्ध बनाम 401 अनधिकृत HTTP प्रतिक्रियाएं


Answers

RFC2616 देखें:

अनधिकृत 401:

अगर अनुरोध में पहले से ही प्राधिकरण प्रमाण-पत्र शामिल हैं, तो 401 प्रतिक्रिया इंगित करती है कि उन प्रमाण-पत्रों के लिए प्राधिकरण को अस्वीकार कर दिया गया है।

403 निषिद्ध:

सर्वर अनुरोध को समझ गया, लेकिन इसे पूरा करने से इनकार कर रहा है।

अद्यतन करें

आपके उपयोग के मामले से, ऐसा प्रतीत होता है कि उपयोगकर्ता प्रमाणीकृत नहीं है। मैं 401 वापस आऊंगा।

संपादित करें: RFC2616 अप्रचलित है, RFC7231 और RFC7235 RFC7231 देखें।

Question

एक ऐसे वेब पेज के लिए जो मौजूद है, लेकिन जिसके लिए उपयोगकर्ता के पास पर्याप्त विशेषाधिकार नहीं हैं, (वे लॉग इन नहीं हैं या उचित उपयोगकर्ता समूह से संबंधित नहीं हैं), सेवा के लिए उचित HTTP प्रतिक्रिया क्या है? 401? 403? कुछ और? मैंने जो कुछ भी पढ़ा है, वह दोनों के बीच के अंतर पर बहुत स्पष्ट नहीं है। प्रत्येक प्रतिक्रिया के लिए केस का क्या उपयोग उपयुक्त है?




आरएफसी 2616 (HTTP / 1.1) 403 के अनुसार भेजा जाता है जब:

सर्वर अनुरोध को समझ गया, लेकिन इसे पूरा करने से इनकार कर रहा है। प्रमाणीकरण मदद नहीं करेगा और अनुरोध दोहराया नहीं जाना चाहिए। अगर अनुरोध विधि HEAD नहीं थी और सर्वर सार्वजनिक करना चाहता है कि अनुरोध पूरा क्यों नहीं हुआ है, तो उसे इकाई में इनकार करने के कारण का वर्णन करना चाहिए। यदि सर्वर क्लाइंट को यह जानकारी उपलब्ध नहीं करना चाहता है, तो स्थिति कोड 404 (नहीं मिला) इसके बजाय उपयोग किया जा सकता है

दूसरे शब्दों में, यदि ग्राहक प्रमाणीकरण द्वारा संसाधन तक पहुंच प्राप्त कर सकते हैं, तो 401 भेजा जाना चाहिए।




401 बनाम 403 के मामले में, इसका उत्तर कई बार दिया गया है। यह अनिवार्य रूप से 'HTTP अनुरोध पर्यावरण' बहस है, न कि 'एप्लिकेशन' बहस।

रोल-अप-लॉन्च इश्यू (एप्लिकेशन) पर एक सवाल प्रतीत होता है।

इस मामले में, केवल लॉग इन नहीं होने पर 401 या 403 भेजने के लिए पर्याप्त नहीं है, जब तक आप HTTP एथ बनाम लॉगिन पेज (HTTP एथ सेट करने के लिए बंधे नहीं) का उपयोग करते हैं। ऐसा लगता है कि आप एक फ़ाइल में एप्लिकेशन-स्तरीय पहुंच के लिए "201 बनाया गया" ढूंढ रहे हैं, जिसमें रोल-आपकी-लॉगिन-लॉगिन स्क्रीन मौजूद है (अनुरोधित संसाधन की बजाय)। यह कहता है:

"मैंने आपको सुना है, यह यहाँ है, लेकिन इसके बजाय इसे आजमाएं (आपको इसे देखने की अनुमति नहीं है)"




यदि किसी अन्य उपयोगकर्ता के रूप में प्रमाणीकरण अनुरोधित संसाधन तक पहुंच प्रदान करेगा, तो 401 अनधिकृत लौटाया जाना चाहिए। 403 निषिद्ध अधिकतर उपयोग किया जाता है जब संसाधन तक पहुंच हर किसी के लिए प्रतिबंधित होती है या किसी दिए गए नेटवर्क तक सीमित होती है या केवल एसएसएल पर ही अनुमति दी जाती है, जब तक कि यह प्रमाणीकरण से संबंधित न हो।

आरएफसी 7235 से (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP / 1.1): प्रमाणीकरण):

3.1। अनधिकृत 401

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

और यह आरएफसी 2616 से है:

10.4.4 403 निषिद्ध

सर्वर अनुरोध को समझ गया, लेकिन इसे पूरा करने से इनकार कर रहा है।
प्रमाणीकरण मदद नहीं करेगा और अनुरोध दोहराया नहीं जाना चाहिए।
अगर अनुरोध विधि हेड नहीं थी और सर्वर बनाना चाहता था
जनता क्यों अनुरोध पूरा नहीं हुआ है, इसे इकाई में इनकार करने के कारण का वर्णन करना चाहिए। यदि सर्वर क्लाइंट को यह जानकारी उपलब्ध नहीं करना चाहता है, तो स्थिति कोड 404
(नहीं मिला) इसके बजाय इस्तेमाल किया जा सकता है।

संपादित करें: आरएफसी 7231 (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP / 1.1): सेमेन्टिक्स और सामग्री) 403 के अर्थ को बदलता है:

6.5.3। 403 निषिद्ध

403 (निषिद्ध) स्थिति कोड इंगित करता है कि सर्वर अनुरोध को समझ गया लेकिन इसे अधिकृत करने से इंकार कर दिया। एक सर्वर जो सार्वजनिक करना चाहता है कि अनुरोध क्यों मना कर दिया गया है, प्रतिक्रिया पेलोड (यदि कोई हो) में उस कारण का वर्णन कर सकता है।

अगर अनुरोध में प्रमाणीकरण प्रमाण-पत्र प्रदान किए गए थे, तो
सर्वर उन्हें पहुंच प्रदान करने के लिए अपर्याप्त मानता है। ग्राहक
इसके साथ अनुरोध स्वचालित रूप से दोहराना नहीं चाहिए
साख। ग्राहक नए या अलग-अलग प्रमाण-पत्रों के साथ अनुरोध दोहरा सकता है। हालांकि, कारणों से एक अनुरोध प्रतिबंधित किया जा सकता है
प्रमाण पत्र से असंबंधित।

एक मूल सर्वर जो एक के वर्तमान अस्तित्व को "छिपाने" की इच्छा रखता है
निषिद्ध लक्षित संसाधन मई के बजाय स्थिति कोड के साथ प्रतिक्रिया
404 नहीं मिला)।

इस प्रकार, 403 का मतलब अब कुछ भी हो सकता है। नए प्रमाण-पत्र प्रदान करने से मदद मिल सकती है ... या ऐसा नहीं हो सकता है।




इस सवाल को कुछ समय पहले पूछा गया था, लेकिन लोगों की सोच चल रही है।

इस मसौदे में धारा 6.5.3 (फील्डिंग और रेस्केके ​​द्वारा लिखित) स्थिति कोड 403 को आरएफसी 2616 में प्रलेखित एक के लिए थोड़ा अलग अर्थ देता है।

यह दर्शाता है कि कई लोकप्रिय वेब-सर्वर और ढांचे द्वारा नियोजित प्रमाणीकरण और प्राधिकरण योजनाओं में क्या होता है।

मैंने थोड़ा सा जोर दिया है जो मुझे लगता है कि सबसे महत्वपूर्ण है।

6.5.3। 403 निषिद्ध

403 (निषिद्ध) स्थिति कोड इंगित करता है कि सर्वर अनुरोध को समझ गया लेकिन इसे अधिकृत करने से इंकार कर दिया। एक सर्वर जो सार्वजनिक करना चाहता है कि अनुरोध क्यों मना कर दिया गया है, प्रतिक्रिया पेलोड (यदि कोई हो) में उस कारण का वर्णन कर सकता है।

यदि अनुरोध में प्रमाणीकरण प्रमाण-पत्र प्रदान किए गए थे, तो सर्वर उन्हें पहुंच प्रदान करने के लिए अपर्याप्त मानता है। ग्राहक को समान प्रमाण-पत्रों के साथ अनुरोध दोहराना नहीं चाहिए। ग्राहक नए या अलग-अलग प्रमाण-पत्रों के साथ अनुरोध दोहरा सकता है। हालांकि, प्रमाण पत्र से संबंधित कारणों के लिए एक अनुरोध प्रतिबंधित किया जा सकता है।

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

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




प्रैक्टिकल उदाहरण

अगर apache प्रमाणीकरण की आवश्यकता है ( .htaccess माध्यम से), और आप Cancel , यह 401 Authorization Required साथ जवाब देगा

अगर nginx को एक फाइल मिलती है, लेकिन उसे पढ़ने / एक्सेस करने के लिए कोई एक्सेस अधिकार (उपयोगकर्ता / समूह) नहीं है, तो यह 403 Forbidden

आरएफसी (2616 धारा 10)

401 अनधिकृत (10.4.2)

मतलब 1: प्रमाणित करने की आवश्यकता है

अनुरोध के लिए उपयोगकर्ता प्रमाणीकरण की आवश्यकता है। ...

मतलब 2: प्रमाणीकरण अपर्याप्त

... अगर अनुरोध में पहले से ही प्राधिकरण प्रमाण-पत्र शामिल हैं, तो 401 प्रतिक्रिया इंगित करती है कि उन प्रमाण-पत्रों के लिए प्राधिकरण को अस्वीकार कर दिया गया है। ...

403 निषिद्ध (10.4.4)

मतलब: प्रमाणीकरण से असंबंधित

... प्राधिकरण मदद नहीं करेगा ...

अधिक जानकारी:

  • सर्वर अनुरोध को समझ गया, लेकिन इसे पूरा करने से इनकार कर रहा है।

  • यह इकाई में इनकार करने के कारण का वर्णन करना चाहिए

  • इसके बजाय स्थिति कोड 404 (नहीं मिला) का उपयोग किया जा सकता है

    (यदि सर्वर क्लाइंट से यह जानकारी रखना चाहता है)

टी एल; डॉ

  • 401: प्रत्येक इनकार जो प्रमाणीकरण के साथ करना है
  • 403: प्रत्येक इनकार जो प्रमाणीकरण के साथ कुछ भी नहीं कर रहा है





Related