Notice: We're retiring Works with Nest. See the home page for more information.
Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

रिडायरेक्ट को कैसे हैंडल करें

कुछ प्रोग्रामिंग भाषाओं में HTTP कार्यान्वयन होता है जिसे पुनर्निर्देशन के लिए विशेष हैंडलिंग की आवश्यकता होती है।

REST API अनुरोध के जवाब में, Nest API सर्वर एक पुनर्निर्देशित करता है। REST क्लाइंट पुनर्निर्देशित का पता लगाता है और उस पृष्ठ का अनुरोध करता है जिसे ग्राहक पुनर्निर्देशित किया गया था। कुछ HTTP कार्यान्वयन ऑथराइज़ेशन हेडर को रीडायरेक्ट किए गए URI के लिए अग्रेषित नहीं करते हैं, और इसके परिणामस्वरूप 401 अनधिकृत त्रुटि होती है।

उदाहरण के लिए, मान लीजिए कि आप foo.com से मांगते हैं। Foo.com सर्वर bar.com पर रीडायरेक्ट के साथ प्रतिक्रिया करता है। डाकिया या कर्ल प्राधिकरण हेडर को फू और फिर बार में भेजते हैं। अन्य HTTP कार्यान्वयन, जैसे कि गोलंग और पायथन, स्वचालित रूप से यूआरआई को पुनर्निर्देशित करने के लिए प्राधिकरण शीर्ष लेख पास नहीं करते हैं।

यह काम किस प्रकार करता है

निम्न अनुक्रम आरेख दिखाता है कि पुनर्निर्देश होने पर क्या होता है।

पुनर्निर्देशन क्रम

तुलना के लिए, यहां तब होता है जब पुनर्निर्देश नहीं होता है।

कोई पुनर्निर्देशन क्रम नहीं

उदाहरण

आमतौर पर, यह अनुमान लगाने के लिए एक अच्छा कोडिंग अभ्यास है कि आपकी भाषा का HTTP कार्यान्वयन प्राधिकरण शीर्ष लेख को पारित नहीं कर सकता है।

आपके कोड को स्वचालित रीडायरेक्ट को रोकना चाहिए और हेडर को वापस जोड़ने के बाद रीडायरेक्ट कॉल करना चाहिए।

उदाहरण के लिए, गो में, आप यह कर सकते हैं:

customClient := http.Client {
    CheckRedirect: func(redirRequest *http.Request, via []*http.Request)
    error {
        // Go's http.DefaultClient does not forward headers when a redirect 3xx
        // response is received. Thus, the header (which in this case contains the
        // Authorization token) needs to be passed forward to the redirect
        // destinations.
        redirRequest.Header = req.Header

        // Go's http.DefaultClient allows 10 redirects before returning an
        // an error. We have mimicked this default behavior.s
        if len(via) >= 10 {
            return errors.New("stopped after 10 redirects")
        }
        return nil
    },
}

अधिक उदाहरणों के लिए, देखें:

पुनर्निर्देशित स्थान संग्रहीत करें

प्रति उपयोगकर्ता के आधार पर रीडायरेक्ट किए गए स्थान को संग्रहीत करना भी एक सर्वोत्तम अभ्यास है। दूसरे शब्दों में, एक उपयोगकर्ता के साइन इन और रीडायरेक्ट प्राप्त होने के बाद, firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ स्थान पर स्टोर करें और बाद में सभी को सीधे इस URI में बनाएँ।

पुनर्निर्देशित स्थान को संग्रहीत करना समय बचाता है और अनावश्यक सर्वर लोड को रोकता है।

रेट रिडाइरेक्टिंग को रिडायरेक्ट करने के तरीके के बारे में अधिक जानने के लिए, डेटा दर सीमाएं देखें

एपीआई का परीक्षण करने के लिए कर्ल का उपयोग करना

कर्ल> = v7.58 का उपयोग करते समय, आपको 401 से अनधिकृत त्रुटि कॉल से एपीआई तक हो सकती है जिसमें रीडायरेक्ट शामिल है। कर्ल v7.58 के अनुसार, कस्टम प्राधिकारी शीर्षकों को एपीआई द्वारा लौटाए गए पुनर्निर्देशित URL पर अग्रेषित नहीं किया जाता है।

कर्ल> = v7.58 पर इस पर ध्यान देने के लिए, किसी भी कमांड लाइन कॉल्स के साथ --location-trusted फ़्लैग का उपयोग करें।