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. يمرر Postman أو Curl رأس التفويض إلى foo ثم إلى bar. لا تقوم تطبيقات HTTP الأخرى ، مثل Golang's و Python ، بتمرير رأس التفويض تلقائيًا إلى URI المعاد توجيهه.

كيف تعمل

يوضح مخطط التسلسل التالي ما يحدث عند حدوث إعادة توجيه.

تسلسل إعادة التوجيه

للمقارنة ، إليك ما يحدث عندما لا تحدث إعادة التوجيه.

لا يوجد تسلسل إعادة توجيه

مثال

بشكل عام ، من الممارسات الجيدة للتشفير توقع أن تطبيق HTTP الخاص بلغتك قد لا يجتاز رأس التفويض.

يجب أن يمنع رمزك إعادة التوجيه التلقائي وإجراء مكالمة إعادة التوجيه بعد إضافة الرؤوس مرة أخرى.

على سبيل المثال ، في Go ، يمكنك القيام بذلك:

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 هذا.

يحفظ تخزين الموقع المعاد توجيهه الوقت ويمنع تحميل الخادم غير الضروري.

لمعرفة المزيد حول كيفية ارتباط عمليات إعادة التوجيه بتحديد المعدل ، راجع حدود معدل البيانات .

باستخدام curl لاختبار API

عند استخدام curl> = v7.58 ، قد تحصل على 401 خطأ غير مصرح به من المكالمات إلى واجهة برمجة التطبيقات التي تتضمن عمليات إعادة توجيه. اعتبارًا من curl v7.58 ، لا تتم إعادة توجيه رؤوس التفويض المخصصة إلى عنوان URL لإعادة التوجيه الذي تم إرجاعه بواسطة واجهة برمجة التطبيقات.

لحساب هذا على curl> = v7.58 ، استخدم علامة --location-trusted مع أي مكالمات سطر أوامر.