ფარდობითი გადამისამართების მიყოლა პროქსის გავლით
ფარდობითი Location გადაჭრათ მიმდინარე დანიშნულების URL-ის მიმართ, პროქსის მისამართი URL-ის გადაწყვეტის გარეთ დატოვებით.
პროქსის გავლით მიღებულმა პასუხმა შეიძლება დააბრუნოს ფარდობითი Location:
Location: ../new/
თანამედროვე HTTP აქ URI-მითითებას უშვებს. გადაჭრათ იგი იმ URL-ის მიმართ, რომელმაც პასუხი შექმნა. თუ ეს 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-ს და არა შუამავალს, რომელიც მის მისაღწევად გამოიყენეს.
ჯერ გადაჭრათ, შემდეგ აირჩიეთ შემდეგი მარშრუტი
გადამისამართებამ შეიძლება შეცვალოს დანიშნულების ჰოსტი ან სქემა. ამიტომ დანიშნულებაზე დაფუძნებულმა პროქსის პოლიტიკამ ეს ახალი URL-იც უნდა შეაფასოს. მარშრუტი, რომელიც პირველი ჰოსტისთვის მუშაობდა, შეიძლება არ იყოს მარშრუტი შემდეგისთვის.
როცა გადამისამართებების დამუშავებას თავად ახორციელებთ, გამოიყენეთ URI-მითითების გადაწყვეტა წერტილოვანი სეგმენტების დამუშავებით. შეინარჩუნეთ ფაქტობრივი სტატუსის კოდის მეთოდის წესები და დააწესეთ გადამისამართების ზღვარი. Location-ის ჰოსტის სახელზე მიბმა ამ გადაწყვეტის ალგორითმის შემცვლელი არ არის.
თუ გადამისამართება ვერ მოხერხდა, შეინახეთ მოთხოვნილი URL, პასუხის სტატუსი, Location-ის მნიშვნელობა და გადაწყვეტილი შემდეგი URL. ეს ოთხი მნიშვნელობა ჩვეულებრივ აჩვენებს, ეკუთვნის თუ არა შეცდომა URL-ის აწყობას თუ შემდგომში ცდილ კავშირს.