Suhteellisen uudelleenohjauksen seuraaminen välityspalvelimen kautta
Ratkaise suhteellinen Location nykyiseen kohde-URL:ään nähden ja pidä välityspalvelimen osoite URL-ratkaisun ulkopuolella.
Välityspalvelimen kautta saatu vastaus voi palauttaa suhteellisen Locationin:
Location: ../new/
Nykyaikainen HTTP sallii tässä URI-viittauksen. Ratkaise se vastauksen tuottanutta URL:ää vasten. Jos tuo URL oli https://docs.example/catalog/old/, yllä oleva viittaus osoittaa https://docs.example/catalog/new/. Välityspalvelimen isäntänimi ei ole perusta.
Tavallisissa Python urllib -pyynnöissä käytä sen uudelleenohjauskäsittelijää sen sijaan, että liittäisit merkkijonoja välityspalvelimen päätepisteen ympärille:
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()
Tässä julkisen asiakirjan pyynnössä ilman välityspalvelimen todennusta HTTP-ehdokas HTTP-välityspalvelinluettelosta voi korvata esimerkkipäätepisteen, kun reitti on sallittu. Luokat tulevat urllib.requestistä. Sen tavallinen käsittelijä seuraa tuettuja uudelleenohjauksia rajojensa puitteissa. final_url kuvaa resurssin lopullisen URL:n, ei välittäjää, jota sen saavuttamiseen käytettiin.
Ratkaise ensin ja valitse sitten seuraava reitti
Uudelleenohjaus voi muuttaa kohdeisäntää tai skeemaa. Siksi kohdeperusteisen välityspalvelinkäytännön on arvioitava myös tämä uusi URL. Reitti, joka toimi ensimmäiselle isännälle, ei välttämättä ole seuraavan reitti.
Kun toteutat uudelleenohjausten käsittelyn itse, käytä URI-viittauksen ratkaisua pisteosien käsittelyllä. Säilytä todellisen tilakoodin menetelmäsäännöt ja aseta uudelleenohjausraja. Locationin liittäminen isäntänimeen ei korvaa tuota ratkaisualgoritmia.
Jos uudelleenohjaus epäonnistuu, säilytä pyydetty URL, vastauksen tila, Location-arvo ja ratkaistu seuraava URL. Nämä neljä arvoa osoittavat yleensä, kuuluuko virhe URL:n rakentamiseen vai sen jälkeen yritettyyn yhteyteen.