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 som mottas 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. Var den URL-en https://docs.example/catalog/old/, peker referansen over på https://docs.example/catalog/new/. Vertsnavnet til proxyen er ikke basen.
For vanlige Python urllib-forespørsler bruker du omdirigeringsbehandleren framfor å 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 grensene sine. final_url beskriver ressursens endelige URL, ikke mellomleddet som ble brukt for å nå den.
Løs opp først, velg så 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 virket 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, behold 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å.