HTTP 301 और 308 स्थिति कोड में क्या अंतर है?


138

HTTP 301और 308स्टेटस कोड में क्या अंतर है ?

  • 301 (स्थायी रूप से स्थानांतरित): यह और भविष्य के सभी अनुरोधों को दिए गए यूआरआई को निर्देशित किया जाना चाहिए।

  • 308 (स्थायी पुनर्निर्देशन): अनुरोध और भविष्य के सभी अनुरोधों को दूसरे URI का उपयोग करके दोहराया जाना चाहिए।

वे समान प्रतीत होते हैं।


Tools.ietf.org/html/rfc2616 और tools.ietf.org/html/rfc6585 में कोई कोड 308 नहीं है , इसलिए इस गैर-मानक कोड के आविष्कारक को प्रश्न को संबोधित करना होगा।
KonstantinL

4
विनिर्देश RFC 7538 है, इसलिए यह वास्तविक HTTP कोड है
अलेक्जेंडर Drobyshevsky

2
खैर, tools.ietf.org/html/rfc7538 : नोट: यह स्थिति कोड 301 के समान है, सिवाय इसके कि यह POST से GET तक अनुरोध विधि को बदलने की अनुमति नहीं देता है।
कोन्स्टेंटिनएल

4
संदर्भ के रूप में RFC 2616 का उपयोग न करें। यह RFC 7230-35 द्वारा पालन किया गया था।
कैसियोमोलिन

जवाबों:


258

का अवलोकन 301, 302और307

आरएफसी 7231 , अर्थ विज्ञान और HTTP / 1.1 प्रोटोकॉल की सामग्री के लिए वर्तमान संदर्भ, को परिभाषित करता है 301(स्थायी रूप से स्थानांतरित) और 302(मिली) स्थिति कोड, कि अनुरोध विधि से परिवर्तित करने की अनुमति देता है POSTके लिए GET। यह विनिर्देश 307(अस्थायी पुनर्निर्देशित) स्थिति कोड को भी परिभाषित करता है जो अनुरोध विधि को बदलने की अनुमति नहीं देता POSTहै GET

नीचे अधिक विवरण देखें:

6.4.2। 301 स्थायी रूप से स्थानांतरित

301(ले जाया गया स्थायी रूप से) स्थिति कोड इंगित करता है कि लक्ष्य संसाधन नए स्थायी URI सौंपा गया है और इस संसाधन के लिए किसी भी भविष्य में संदर्भ संलग्न यूआरआई से एक का उपयोग करना चाहिए। [...]

नोट: ऐतिहासिक कारणों से, एक प्रयोक्ता एजेंट से अनुरोध विधि बदल सकते हैं POSTकरने के लिए GETबाद में अनुरोध के लिए। यदि यह व्यवहार अवांछित है, तो 307(अस्थायी पुनर्निर्देशित) स्थिति कोड इसके बजाय उपयोग किया जा सकता है।

6.4.3। 302 मिला

302(मिली) स्थिति कोड इंगित करता है कि लक्ष्य संसाधन अलग URI में अस्थायी रूप से रहता है। चूंकि पुनर्निर्देशन को मौके पर बदल दिया जा सकता है, ग्राहक को भविष्य के अनुरोधों के लिए प्रभावी अनुरोध URI का उपयोग जारी रखना चाहिए। [...]

नोट: ऐतिहासिक कारणों से, एक प्रयोक्ता एजेंट से अनुरोध विधि बदल सकते हैं POSTकरने के लिए GETबाद में अनुरोध के लिए। यदि यह व्यवहार अवांछित है, तो 307(अस्थायी पुनर्निर्देशित) स्थिति कोड इसके बजाय उपयोग किया जा सकता है।

6.4.7। 307 अस्थाई पुनर्निर्देश

307(अस्थायी पुनर्निर्देशन) स्थिति कोड इंगित करता है कि अस्थायी तौर पर अलग यूआरआई और उपयोगकर्ता एजेंट के तहत लक्ष्य संसाधन बसता था अनुरोध विधि परिवर्तित नहीं होगा अगर यह कि यूआरआई के लिए एक स्वचालित पुनर्निर्देशन प्रदर्शन करती है। चूंकि पुनर्निर्देशन समय के साथ बदल सकता है, ग्राहक को भविष्य के अनुरोधों के लिए मूल प्रभावी अनुरोध यूआरआई का उपयोग जारी रखना चाहिए। [...]

नोट: यह स्थिति कोड 302(संस्थापक) के समान है , सिवाय इसके कि यह अनुरोध विधि को बदलने की अनुमति नहीं देता POSTहै GET। यह विनिर्देश 301(मूव्ड परमानेंटली) ( RFC 7238 के लिए कोई समकक्ष समकक्ष को परिभाषित नहीं करता है , हालांकि, 308 इस उद्देश्य के लिए स्थिति कोड (स्थायी पुनर्निर्देशन) को परिभाषित करता है )।

की जरूरत 308

आरएफसी 7238 को परिभाषित करने के बनाया गया है 308(स्थायी पुनर्निर्देशन) स्थिति कोड, के समान है 301(स्थायी रूप से स्थानांतरित), लेकिन अनुरोध विधि से बदल करने की अनुमति देता नहीं है किया जा POSTकरने के लिए GET

308स्थिति कोड अब द्वारा परिभाषित किया गया आरएफसी 7538 (कि obsoleted आरएफसी 7238 )।

3. 308 स्थायी पुनर्निर्देश

308(स्थायी पुनर्निर्देशन) स्थिति कोड इंगित करता है कि लक्ष्य संसाधन नए स्थायी URI सौंपा गया है और इस संसाधन के लिए किसी भी भविष्य में संदर्भ संलग्न यूआरआई से एक का उपयोग करना चाहिए। लिंक संपादन क्षमताओं वाले ग्राहकों को जहां संभव हो, सर्वर द्वारा भेजे गए एक या अधिक नए संदर्भों के लिए प्रभावी अनुरोध URI के संदर्भों को स्वचालित रूप से फिर से लिंक करना चाहिए। [...]

नोट: यह स्थिति कोड 301(मूव्ड परमानेंटली) के समान है , सिवाय इसके कि यह अनुरोध विधि को बदलने की अनुमति नहीं देता POSTहै GET

हमारे पास निम्नलिखित हैं:

                                                             +-----------+-----------+
                                                             | Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET        | 301       | 302       |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308       | 307       |
+------------------------------------------------------------+-----------+-----------+

सबसे उपयुक्त स्थिति कोड चुनना

माइकल क्रोपत ने एक साथ निर्णय चार्ट का एक सेट रखा जो प्रत्येक स्थिति के लिए सर्वश्रेष्ठ स्थिति कोड निर्धारित करने में मदद करता है। निम्नलिखित 2xxऔर 3xxस्थिति कोड देखें:

2xx या 3xx स्टेटस कोड चुनना


3
यह देखते हुए कि यह प्रश्न विशेष रूप से 301 और 308 के बीच नियति के बारे में था, क्या आप कुछ और स्पष्टीकरण दे सकते हैं: "अनुरोध विधि POSTको GET" से बदलने की अनुमति नहीं देता है ? क्या इसका मतलब यह होगा कि एक पोस्ट किए गए फॉर्म को संसाधित नहीं किया जा सकता है, लेकिन एक नया नया फॉर्म सर्वरड हो सकता है और फिर अगले अनुरोध पर पोस्ट किया जा सकता है?
आर। श्रेयर्स

1
यह मसौदा विनिर्देश ( tools.ietf.org/id/draft-hunt-http-rest-redirect-00.html ) बताता है कि जीएसटी के लिए भी ReSTful सेवाओं को 308 का उपयोग करना चाहिए। "HTTP पुनर्निर्देशन कोड 301-306 SHOULD का उपयोग तब तक नहीं किया जाना चाहिए जब तक कि सेवा प्रदाता को यह पता न हो कि ग्राहक वास्तव में उपयोगकर्ता-एजेंट है।" हालाँकि यह केवल एक मसौदा है। मुझे यकीन नहीं है कि कब / कब स्वीकार किया जाएगा।
ब्रूस एडम्स

1
यह पोस्ट, निश्चित-मार्गदर्शक-से-प्राप्त-बनाम-पोस्ट , स्पष्ट करती है कि क्यों POST(सुरक्षित) अनुरोध को एक में बदलने की अनुमति दी जाती है ( GETउस डेटा में असुरक्षित इसे url में जोड़कर पारित किया जाता है - और यूआरएल को बचाया जा सकता है - पासवर्ड सहित) अनुरोध एक सुरक्षा मुद्दा हो सकता है, और आम तौर पर इससे बचा जाना चाहिए, जब तक कि आप यह नहीं जानते कि इसे बदलना सुरक्षित है। इन दिनों ऐसा लगता है कि यह आमतौर पर समर्थित है और 307, 308 से अधिक 301, 302 का उपयोग करना पसंद करता है। लेकिन आपको सत्यापित करना चाहिए।
शेरलहोमन

1
Mememonic 308एक बग़ल में अनंत की तरह है, इसलिए स्थायी पुनर्निर्देशन, और अनुरोध के तरीके को भी कभी नहीं बदलना चाहिए - यह एक स्थायी, निश्चित अनुरोध प्रकार भी है। फिर, 307है 1एक अस्थायी स्थान के लिए स्थायी / रखें अनुरोध विधि (प्राप्त / पोस्ट), लेकिन रीडायरेक्ट - नीचे कदम: 7 - "छोड़ दिया बारी" या अस्थायी चक्कर, और 7 की तरह दिखता है कश्मीर के लिए देख भी इसी तरह की है, इसलिए "रखना" अनुरोध विधि।
शेरलहोमन

आप Resume अधूरा का उल्लेख करना भूल गए ।
Knu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.