Следење на релативно пренасочување низ прокси
Решете релативен 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 или на врската што е обидена потоа.