Google is committed to advancing racial equity for Black communities. See how.

كيفية التعامل مع عمليات إعادة التوجيه

تحتوي بعض لغات البرمجة على تطبيقات HTTP تتطلب معالجة خاصة لعمليات إعادة التوجيه.

استجابة لطلب REST API ، يعرض خادم Nest API إعادة توجيه. يكتشف عميل REST إعادة التوجيه ويطلب الصفحة التي تم إعادة توجيه العميل إليها. لا تقوم بعض تطبيقات HTTP بإعادة توجيه رأس التخويل إلى URI المعاد توجيهه ، وينتج عن ذلك خطأ 401 غير مصرح به.

على سبيل المثال ، افترض أنك تسأل عن foo.com. يستجيب خادم foo.com بإعادة توجيه إلى bar.com. يقوم ساعي البريد أو Curl بتمرير رأس التفويض إلى foo ثم إلى الحظر. لا تقوم تطبيقات HTTP الأخرى ، مثل Golang و 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 لإعادة التوجيه الذي تعرضه واجهة برمجة التطبيقات.

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