Одговор примљен кроз прокси може вратити релативни 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-а или вези покушаној после.

Повезани чланци