Følg en relativ omdirigering gennem proxyen
Opløs en relativ Location mod den aktuelle destinations-URL, så proxyadressen holdes ude af URL-opløsningen.
Et svar modtaget gennem en proxy kan returnere en relativ Location:
Location: ../new/
Moderne HTTP tillader en URI-reference her. Opløs den mod den URL, der frembragte svaret. Hvis den URL var https://docs.example/catalog/old/, identificerer referencen ovenfor https://docs.example/catalog/new/. Proxyens værtsnavn er ikke basis.
Brug til almindelige Python urllib-anmodninger dens omdirigeringshandler i stedet for at sammenkæde strenge omkring proxy-endpointet:
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()
Til denne anmodning om et offentligt dokument uden proxy-godkendelse kan en HTTP-kandidat fra HTTP-proxy-listen erstatte eksempel-endpointet, når ruten er tilladt. Klasserne kommer fra urllib.request. Dens normale handler følger understøttede omdirigeringer inden for sine grænser. final_url beskriver resursens endelige URL, ikke den mellemmand, der blev brugt til at nå den.
Opløs først, vælg derefter den næste rute
En omdirigering kan ændre destinationsværten eller skemaet. En destinationsbaseret proxy-politik skal derfor også vurdere den nye URL. En rute, der virkede for den første vært, er måske ikke ruten for den næste.
Når du selv implementerer håndtering af omdirigeringer, skal du bruge URI-referenceopløsning med håndtering af punktsegmenter. Bevar metode-reglerne for den faktiske statuskode, og indfør en omdirigeringsgrænse. At tilføje Location til et værtsnavn er ikke en erstatning for den opløsningsalgoritme.
Hvis en omdirigering mislykkes, skal du beholde den anmodede URL, svarstatus, Location-værdien og den opløste næste URL. Disse fire værdier viser normalt, om fejlen hører til URL-konstruktionen eller til forbindelsen, der blev forsøgt bagefter.