قد يعيد رد وصل عبر وكيل قيمة Location نسبية:

Location: ../new/

يسمح HTTP الحديث بمرجع URI هنا. حلّه مقابل عنوان URL الذي أنتج الرد. إذا كان ذلك العنوان https://docs.example/catalog/old/، فإن المرجع أعلاه يحدد https://docs.example/catalog/new/. ليس اسم مضيف الوكيل هو الأساس.

بالنسبة لطلبات Python urllib العادية، استخدم معالج إعادة التوجيه بدلًا من ربط السلاسل حول نقطة نهاية الوكيل:

opener = build_opener(ProxyHandler({
    "https": "http://proxy.example:8080",
}))
with opener.open("https://docs.example/catalog/old/",
                 timeout=15) as response:
    final_url = response.geturl()

لهذا الطلب الخاص بمستند عام دون مصادقة وكيل، يمكن لمرشح HTTP من قائمة وكلاء HTTP أن يحل محل نقطة النهاية النموذجية عندما يكون المسار مسموحًا. تأتي الفئات من urllib.request. يتبع معالجه العادي عمليات إعادة التوجيه المدعومة ضمن حدوده. يصف final_url عنوان URL النهائي للمورد، لا الوسيط المستخدم للوصول إليه.

حلّل أولًا، ثم اختر المسار التالي

قد تغيّر إعادة التوجيه مضيف الوجهة أو المخطط. لذلك تحتاج سياسة الوكيل القائمة على الوجهة إلى تقييم ذلك العنوان الجديد أيضًا. المسار الذي نجح مع المضيف الأول قد لا يكون المسار للمضيف التالي.

عند تنفيذ معالجة إعادة التوجيه بنفسك، استخدم حل مرجع URI مع معالجة المقاطع النقطية. حافظ على قواعد الطريقة الخاصة برمز الحالة الفعلي وافرض حدًا لإعادة التوجيه. إلحاق Location باسم مضيف ليس بديلًا عن خوارزمية الحل تلك.

إذا فشلت إعادة التوجيه، فاحتفظ بعنوان URL المطلوب وحالة الرد وقيمة Location وعنوان URL التالي المحلول. تُظهر هذه القيم الأربع عادةً ما إذا كان الفشل يعود إلى بناء URL أم إلى الاتصال الذي جُرّب بعده.

مقالات ذات صلة