Proksidən alınan cavab nisbi Location qaytara bilər:

Location: ../new/

Müasir HTTP burada URI istinadına icazə verir. Onu cavabı yaradan URL-ə görə həll edin. Əgər həmin URL https://docs.example/catalog/old/ idisə, yuxarıdakı istinad https://docs.example/catalog/new/ ünvanını göstərir. Proksin host adı əsas deyil.

Adi Python urllib sorğuları üçün proksi son nöqtəsi ətrafında sətirləri birləşdirmək əvəzinə onun yönləndirmə işləyicisindən istifadə edin:

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 autentifikasiyası olmayan bu ictimai sənəd sorğusu üçün HTTP proksi siyahısından bir HTTP namizədi, marşrut icazəli olduqda nümunə son nöqtəsini əvəz edə bilər. Siniflər urllib.request-dən gəlir. Onun normal işləyicisi dəstəklənən yönləndirmələri öz hədləri daxilində izləyir. final_url son resurs URL-ini təsvir edir, ona çatmaq üçün istifadə olunan vasitəçini deyil.

Əvvəlcə həll edin, sonra növbəti marşrutu seçin

Yönləndirmə təyinat hostunu və ya sxemini dəyişə bilər. Buna görə təyinat əsaslı proksi siyasəti həmin yeni URL-i də qiymətləndirməlidir. Birinci host üçün işləyən marşrut növbəti üçün uyğun olmaya bilər.

Yönləndirmə emalını özünüz həyata keçirirsinizsə, nöqtə-seqment emalı ilə URI istinad həllindən istifadə edin. Faktiki status kodunun metod qaydalarını qoruyun və yönləndirmə həddi təyin edin. Location-u host adına əlavə etmək həmin həll alqoritminin əvəzi deyil.

Yönləndirmə uğursuz olarsa, tələb olunan URL-i, cavab statusunu, Location dəyərini və həll edilmiş növbəti URL-i saxlayın. Bu dörd dəyər adətən nasazlığın URL qurulmasına, yoxsa sonradan cəhd edilən bağlantıya aid olduğunu göstərir.

Əlaqəli məqalələr