Seguir una redirecció relativa a través del proxy
Resoliu una Location relativa respecte de l'URL de destinació actual, mantenint l'adreça del proxy fora de la resolució d'URL.
Una resposta rebuda a través d'un proxy pot retornar una Location relativa:
Location: ../new/
L'HTTP modern permet aquí una referència URI. Resoliu-la respecte de l'URL que va produir la resposta. Si aquest URL era https://docs.example/catalog/old/, la referència anterior identifica https://docs.example/catalog/new/. El nom d'amfitrió del proxy no és la base.
Per a peticions ordinàries de Python urllib, feu servir el seu gestor de redireccions en lloc d'unir cadenes al voltant del punt final del proxy:
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()
Per a aquesta petició de document públic sense autenticació de proxy, un candidat HTTP de la llista de proxies HTTP pot substituir el punt final d'exemple quan la ruta està permesa. Les classes provenen d'urllib.request. El seu gestor normal segueix les redireccions admeses dins dels seus límits. final_url descriu l'URL final del recurs, no l'intermediari utilitzat per arribar-hi.
Primer resoliu, després trieu la ruta següent
Una redirecció pot canviar l'amfitrió o l'esquema de destinació. Per tant, una política de proxy basada en la destinació també ha d'avaluar aquest URL nou. Una ruta que funcionava per al primer amfitrió pot no ser la ruta per al següent.
Quan implementeu vosaltres mateixos la gestió de redireccions, useu la resolució de referències URI amb tractament de segments de punt. Conserveu les regles de mètode del codi d'estat real i imposeu un límit de redireccions. Afegir Location a un nom d'amfitrió no substitueix aquest algorisme de resolució.
Si una redirecció falla, conserveu l'URL sol·licitat, l'estat de la resposta, el valor de Location i l'URL següent resolt. Aquests quatre valors solen mostrar si la fallada pertany a la construcció de l'URL o a la connexió provada després.