Følg en relativ omdirigering gjennom proxyen
Løs opp en relativ Location mot gjeldende mål-URL, og hold proxyadressen utenfor URL-oppslaget.
Et svar mottatt gjennom en proxy kan returnere en relativ Location:
Location: ../new/
Moderne HTTP tillater en URI-referanse her. Løs den opp mot URL-en som produserte svaret. Hvis den URL-en var https://docs.example/catalog/old/, identifiserer referansen ovenfor https://docs.example/catalog/new/. Proxyens vertsnavn er ikke basen.
For vanlige Python urllib-forespørsler bruker du omdirigeringsbehandleren i stedet for å sette sammen strenger rundt proxy-endepunktet:
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()
For denne forespørselen om et offentlig dokument uten proxy-autentisering kan en HTTP-kandidat fra HTTP-proxylisten erstatte eksempel-endepunktet når ruten er tillatt. Klassene kommer fra urllib.request. Den vanlige behandleren følger støttede omdirigeringer innenfor sine grenser. final_url beskriver ressursens endelige URL, ikke mellomleddet som ble brukt for å nå den.
Løs opp først, velg deretter neste rute
En omdirigering kan endre målverten eller skjemaet. En destinasjonsbasert proxy-policy må derfor også vurdere den nye URL-en. En rute som fungerte for den første verten, er kanskje ikke ruten for den neste.
Når du selv implementerer håndtering av omdirigeringer, bruk URI-referanseoppslag med håndtering av punktsegmenter. Behold metode-reglene for den faktiske statuskoden, og sett en omdirigeringsgrense. Å legge Location til et vertsnavn er ikke en erstatning for den oppslagsalgoritmen.
Hvis en omdirigering mislykkes, beholder du den forespurte URL-en, svarstatusen, Location-verdien og den oppløste neste URL-en. Disse fire verdiene viser vanligvis om feilen hører til URL-konstruksjonen eller til tilkoblingen som ble forsøkt etterpå.