Proksi orqali nisbiy yoʻnaltirishni kuzatish
Nisbiy Location ni joriy maqsad URL ga nisbatan hal qiling, proksi manzilini URL hal qilishdan tashqarida saqlang.
Proksi orqali olingan javob nisbiy Location qaytarishi mumkin:
Location: ../new/
Zamonaviy HTTP bu yerda URI havolasiga ruxsat beradi. Uni javobni yaratgan URL ga nisbatan hal qiling. Agar u URL https://docs.example/catalog/old/ boʻlsa, yuqoridagi havola https://docs.example/catalog/new/ ni koʻrsatadi. Proksining xost nomi asos emas.
Oddiy Python urllib soʻrovlari uchun proksi oxirgi nuqtasi atrofida satrlarni birlashtirish oʻrniga uning yoʻnaltirish ishlovchisidan foydalaning:
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()
Proksi autentifikatsiyasisiz ushbu ommaviy hujjat soʻrovi uchun marshrut ruxsat etilganda HTTP proksi roʻyxatidan HTTP nomzod namunaviy oxirgi nuqtani almashtirishi mumkin. Sinflar urllib.request dan keladi. Uning oddiy ishlovchisi qoʻllab-quvvatlanadigan yoʻnaltirishlarni oʻz chegaralarida kuzatadi. final_url resursning yakuniy URL ini tavsiflaydi, unga yetish uchun ishlatilgan vositachini emas.
Avval hal qiling, keyin keyingi marshrutni tanlang
Yoʻnaltirish maqsad xostini yoki sxemasini oʻzgartirishi mumkin. Shuning uchun maqsadga asoslangan proksi siyosati oʻsha yangi URL ni ham baholashi kerak. Birinchi xost uchun ishlagan marshrut keyingisi uchun marshrut boʻlmasligi mumkin.
Yoʻnaltirishni qayta ishlashni oʻzingiz joriy qilsangiz, nuqta segmentlarini qayta ishlash bilan URI havolasini hal qilishdan foydalaning. Haqiqiy holat kodining metod qoidalarini saqlang va yoʻnaltirish chegarasini belgilang. Location ni xost nomiga qoʻshish bu hal qilish algoritmining oʻrnini bosmaydi.
Agar yoʻnaltirish muvaffaqiyatsiz boʻlsa, soʻralgan URL, javob holati, Location qiymati va hal qilingan keyingi URL ni saqlang. Bu toʻrt qiymat odatda xato URL qurilishiga yoki keyin sinab koʻrilgan ulanishga tegishli ekanini koʻrsatadi.