302 बनाम 303 के उदाहरण


22

प्रतिक्रिया 302और 303प्रतिक्रिया में क्या अंतर है ?

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

  • 10.3.3 302 मिला
  • 10.3.4 303 अन्य देखें

ये विनिमेय हैं या एक दूसरे के ऊपर क्यों इस्तेमाल किया जाएगा? क्या आप कृपया एक का उपयोग मामला प्रदान कर सकते हैं जब एक का उपयोग किया जाएगा (और दूसरा नहीं होगा)?

जवाबों:


35

जिस पृष्ठ पर आप जुड़े हैं उसका विवरण उनके इच्छित उद्देश्य के बारे में काफी वर्णनात्मक प्रतीत होता है:

एक 302 रीडायरेक्ट इंगित करता है कि रीडायरेक्ट अस्थायी है - क्लाइंट को भविष्य के अनुरोधों में मूल URL पर वापस जांचना चाहिए।

303 रीडायरेक्ट का अर्थ POSTकिसी GETसंसाधन के अनुरोध को पुनर्निर्देशित करना है (अन्यथा, ग्राहक मानता है कि नए स्थान के लिए अनुरोध विधि मूल संसाधन के लिए समान है)।

यदि आप किसी क्लाइंट को अपने वेब एप्लिकेशन के हिस्से के रूप में पुनर्निर्देशित कर रहे हैं, लेकिन उनसे अपेक्षा करें कि वे हमेशा वेब एप्लिकेशन (उदाहरण के लिए, URL शॉर्टनर) पर शुरू करें, तो 302 रीडायरेक्ट समझ में आता है। एक 303 रीडायरेक्ट उपयोग जब आप प्राप्त कर रहे के लिए है POSTएक ग्राहक (जैसे, किसी फ़ॉर्म सबमिशन) से डेटा और आप उन्हें एक नया वेब पेज पर रीडायरेक्ट करने का उपयोग कर प्राप्त किया जा करना चाहते हैं GETके बजाय POST(जैसे, एक मानक पृष्ठ अनुरोध)।

लेकिन यह नोट स्टेटस कोड परिभाषाओं से देखें - ज्यादातर क्लाइंट 302 या 303 दोनों में से एक ही काम करेंगे:

  Note: RFC 1945 and RFC 2068 specify that the client is not allowed
  to change the method on the redirected request.  However, most
  existing user agent implementations treat 302 as if it were a 303
  response, performing a GET on the Location field-value regardless
  of the original request method. The status codes 303 and 307 have
  been added for servers that wish to make unambiguously clear which
  kind of reaction is expected of the client.

4
स्पष्ट लेकिन गलत। एक 303 रीडायरेक्ट स्थायी नहीं है । RFC कहता है "303 प्रतिसाद जरूरी नहीं होना चाहिए" । आपके द्वारा यहां दिया गया विवरण 301 रीडायरेक्ट से मेल खाता है।
लादादादा

2
मैया पापा। मेरे पास 301 और 303 पीछे थे। मैंने जवाब अपडेट कर दिया है।
लार्क्स

अब 308 है
मिरांडा

मुझे लगता है कि यह सुझाव देना बहुत ही भ्रामक है कि 303 का मतलब "POST" को GET - पूर्ण विराम पर पुनर्निर्देशित करना है। युक्ति बताती है कि 303 मूल रूप से अनुरोधित विधि के माध्यम से संसाधन के प्रतिनिधित्व की उपलब्धता के बारे में अधिक है। यदि, उदाहरण के लिए, मेरे पास एक बड़ी अधिकार-सुरक्षित छवि है जो केवल प्रमाणित उपयोगकर्ताओं के लिए उपलब्ध है, तो मैं एक छोटी छवि में 303 का उपयोग न कर सकने वाले उपयोगकर्ताओं को पुनर्निर्देशित कर सकता हूं। ऐसे मामले में उपयोग की जाने वाली अनुरोध विधि अप्रासंगिक है।
बीम्यूड

RFC का कहना है कि "यह विधि मुख्य रूप से उपयोगकर्ता एजेंट को चयनित संसाधन पर पुनर्निर्देशित करने के लिए POST- सक्रिय स्क्रिप्ट के आउटपुट की अनुमति देने के लिए मौजूद है।" और "अनुरोध की प्रतिक्रिया एक अलग URI के तहत मिल सकती है और उस संसाधन पर GET पद्धति का उपयोग करके पुनर्प्राप्त किया जा सकता है"। मुझे लगता है कि मैंने जो कुछ कहा, वह सब बहुत ज्यादा मेल खाता है (लेकिन बहुत साल पहले), लेकिन मुझे यकीन है कि व्याख्या के लिए जगह है।
लार्क्स

15

चार अलग-अलग पुनर्निर्देशित प्रकार (वर्तमान में) हैं। मूल रूप से केवल दो ही थे लेकिन अधिकांश ग्राहकों ने 302 को गलत तरीके से लागू किया इसलिए 302 प्राप्त करने पर दो अलग-अलग संभावित व्यवहारों के बीच अंतर को स्पष्ट करने के लिए दो और जोड़े गए।

आपके द्वारा लिंक किए गए RFC 302 रीडायरेक्ट पर इस खंड में बताता है:

  Note: RFC 1945 and RFC 2068 specify that the client is not allowed
  to change the method on the redirected request.  However, most
  existing user agent implementations treat 302 as if it were a 303
  response, performing a GET on the Location field-value regardless
  of the original request method. The status codes 303 and 307 have
  been added for servers that wish to make unambiguously clear which
  kind of reaction is expected of the client.
  1. 301 रीडायरेक्ट एक स्थायी रीडायरेक्ट है। यह उपलब्ध नहीं है और इस URL के लिए किसी भी बुकमार्क को नए URL पर इंगित करने के लिए अपडेट किया जाना चाहिए।
  2. एक 302 रीडायरेक्ट एक अस्थायी रीडायरेक्ट है। यह डिफ़ॉल्ट रूप से उपलब्ध नहीं है और हर बार फिर से अनुरोध किया जाना चाहिए (लेकिन आप कैशिंग हेडर के साथ इसे ओवरराइड कर सकते हैं)। अनुवर्ती अनुरोध को मूल अनुरोध के रूप में (GST और CONDECT, PUT, DELETE, आदि) एक ही विधि (POST, GET, DELETE, आदि) का उपयोग करना चाहिए और GET और HEAD अनुरोधों के अलावा, ग्राहक को अनुरोध करने से पहले उपयोगकर्ता को संकेत देना चाहिए। यह वह हिस्सा है जो ग्राहकों को गलत लगा और उनमें से अधिकांश ने मूल विधि की परवाह किए बिना GET के अनुवर्ती अनुरोध के लिए विधि बदल दी।
  3. एक 303 रीडायरेक्ट 302 के समान है, सिवाय इसके कि अनुवर्ती अनुरोध अब स्पष्ट रूप से GET अनुरोध में बदल दिया गया है और कोई पुष्टि की आवश्यकता नहीं है।
  4. एक 307 रीडायरेक्ट 302 के समान है, सिवाय इसके कि अनुवर्ती अनुरोध अब स्पष्ट रूप से मूल अनुरोध और जीईटी और एचएएडी के अलावा अन्य अनुरोध विधियों के लिए उपयोगकर्ता से प्राप्त किया जाना चाहिए।

पुराने क्लाइंट 303 रीडायरेक्ट को नहीं समझ सकते हैं। HTTP / 1.1 अनुरोध करने वाली कोई भी चीज़ 303 प्रतिक्रिया को समझना चाहिए।

300 और 305 प्रतिक्रियाओं को पुनर्निर्देशित करना संभव है, जिसका अर्थ है कि छह अलग-अलग प्रकार हैं।


0

पुनर्निर्देशित प्रकार (301,302,303 ...) का उपयोग इस बात पर बहुत अधिक प्रभाव डालता है कि खोज इंजन किस प्रकार सामग्री को अनुक्रमित और रैंक करेगा। कुछ मकड़ियों को भी अस्थायी रूप से पुनर्निर्देशित सामग्री को अनुक्रमणित करने से मना कर सकते हैं। विवरण विभिन्न एसईओ साहित्य में पाया जा सकता है ...

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