2010-08-19 8 views
12

में लॉग इन नहीं करने के लिए एक अलग HTTP स्थिति नहीं है, इसलिए 404, 409, 201, 302 और इसी तरह सहित मेरे एपीआई में कुछ अलग स्थिति शीर्षलेख भेजें। अब मैं 401 Unauthorized के साथ मुद्दों में भाग रहा हूं। मैं वर्तमान में इसे भेज रहा हूं यदि कोई उपयोगकर्ता लॉग इन नहीं होता है (संपूर्ण एपीआई अधिकार प्रबंधित है) या यदि कोई उपयोगकर्ता पुनर्प्राप्त/संशोधित विशेष संसाधन के लिए विशिष्ट पहुंच आवश्यकताओं को पूरा नहीं करता है।रीस्टफुल एपीआई

अब, मैं फ्रंटेंड क्लाइंट (एक jQuery/HTML एप्लिकेशन) को भी नियंत्रित करता हूं, और मैं 401 के लिए दो मामलों के बीच अंतर करना चाहता हूं। क्या लॉग इन नहीं होने के लिए मुझे एक अलग स्थिति का उपयोग करना चाहिए? हेडर के साथ शरीर सामग्री भेजने के लिए इसे संभालने का सबसे अच्छा तरीका है?

+0

https://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unuthorized-http-responses –

उत्तर

20

आपको यह संकेत देने के लिए 403 का उपयोग करना चाहिए कि उपयोगकर्ता संसाधन तक पहुंचने के लिए अधिकृत नहीं है। 401 का उपयोग यह इंगित करने के लिए है कि उपयोगकर्ता को वर्तमान में इसका उपयोग करने वाले प्रमाण-पत्रों की आपूर्ति करने की आवश्यकता है। 401 और 403here के विवरण देखें।

3

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

  • 401 सही नहीं होगा और क्योंकि यह मूल रूप से कहा गया है कि "मैं इन क्रेडेंशियल्स को पहचान नहीं पा"
  • 403 सही है, क्योंकि यह कहा गया है कि

"आप ऐसा करने की अनुमति नहीं कर रहे हैं" किसी भी मामले में, प्रतिक्रिया निकाय में हमेशा अधिक जानकारी होनी चाहिए, even when it's an error response। यह एक ग्राहक को आगे बढ़ने की उम्मीद करता है, उम्मीद है कि आगे बढ़ने के लिए (एम्बेडेड लिंक का उपयोग करके) या आगे बढ़ने के बारे में पर्याप्त जानकारी प्रदान करके (उदाहरण के लिए "मेरे रिकॉर्ड इंगित करते हैं कि आपके पास XXX को हटाने की अनुमति नहीं है, कृपया अपने सिस्टम व्यवस्थापक से संपर्क करें और पूछें खाद्य अनुमति ")।

+0

पर इसी तरह का प्रश्न "क्या फूडबार XXX की अनुमति नहीं है"? – Hello71

+0

"XXX को हटाने की अनुमति नहीं है" को डेलेटी अनुरोध के जवाब के रूप में सोचा गया था, इसलिए हां। यदि आप एक पुट अनुरोध के लिए 403 की सेवा करते हैं, तो आप इसे उचित रूप से शब्द देंगे। खाद्य पदार्थ को "खाद्य भूमिका" पढ़नी चाहिए थी। मुद्दा यह है कि उपयोगकर्ता को यह बताएं कि वे समस्या को कैसे हल कर सकते हैं, लेकिन वह (त्रुटि संदेश डिज़ाइन) एक और विषय है! – mogsie