Santykinio nukreipimo sekimas per tarpinį serverį
Išspręskite santykinį Location pagal dabartinį paskirties URL, palikdami tarpinio serverio adresą už URL sprendimo ribų.
Per tarpinį serverį gautas atsakymas gali grąžinti santykinį Location:
Location: ../new/
Šiuolaikinis HTTP čia leidžia URI nuorodą. Išspręskite ją pagal URL, kuris sukūrė atsakymą. Jei tas URL buvo https://docs.example/catalog/old/, aukščiau pateikta nuoroda nurodo https://docs.example/catalog/new/. Tarpinio serverio pagrindinio kompiuterio vardas nėra pagrindas.
Įprastiems Python urllib užklausoms naudokite jo nukreipimų apdorotoją, o ne junkite eilutes aplink tarpinio serverio galinį tašką:
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()
Šiai viešo dokumento užklausai be tarpinio serverio autentifikavimo HTTP kandidatas iš HTTP tarpinių serverių sąrašo gali pakeisti pavyzdinį galinį tašką, kai maršrutas leidžiamas. Klasės kilusios iš urllib.request. Įprastas jo apdorotojas seka palaikomus nukreipimus savo ribose. final_url apibūdina galutinį ištekliaus URL, o ne tarpininką, naudotą jam pasiekti.
Pirmiausia išspręskite, tada rinkitės kitą maršrutą
Nukreipimas gali pakeisti paskirties pagrindinį kompiuterį arba schemą. Todėl paskirties pagrindu veikianti tarpinio serverio politika turi įvertinti ir tą naują URL. Maršrutas, veikęs pirmajam kompiuteriui, gali būti netinkamas kitam.
Kai nukreipimų apdorojimą įgyvendinate patys, naudokite URI nuorodos sprendimą su taškinių segmentų apdorojimu. Išsaugokite tikrojo būsenos kodo metodų taisykles ir nustatykite nukreipimų ribą. Location prijungimas prie kompiuterio vardo nepakeičia to sprendimo algoritmo.
Jei nukreipimas nepavyksta, išsaugokite užklaustą URL, atsakymo būseną, Location reikšmę ir išspręstą kitą URL. Šios keturios reikšmės paprastai parodo, ar gedimas susijęs su URL konstravimu, ar su vėliau bandytu ryšiu.