Puhverserveri kaudu saadud vastus võib tagastada suhtelise Locationi:

Location: ../new/

Kaasaegne HTTP lubab siin URI-viidet. Lahendage see vastuse tekitanud URL-i suhtes. Kui see URL oli https://docs.example/catalog/old/, osutab ülaltoodud viide https://docs.example/catalog/new/. Puhverserveri hostinimi ei ole alus.

Tavaliste Python urllib-päringute puhul kasutage selle ümbersuunamise töötlejat, mitte ärge ühendage stringe puhverserveri lõpp-punkti ümber:

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()

Selle avaliku dokumendi päringu jaoks ilma puhverserveri autentimiseta võib HTTP-puhverserverite loendist pärit HTTP-kandidaat asendada näidislõpp-punkti, kui marsruut on lubatud. Klassid pärinevad moodulist urllib.request. Selle tavaline töötleja järgib toetatud ümbersuunamisi oma piirides. final_url kirjeldab ressursi lõplikku URL-i, mitte vahendajat, mille kaudu see saavutati.

Esmalt lahendage, seejärel valige järgmine marsruut

Ümbersuunamine võib muuta sihtkoha hosti või skeemi. Seetõttu peab sihtkohapõhine puhverserveri poliitika hindama ka seda uut URL-i. Marsruut, mis töötas esimese hosti jaoks, ei pruugi olla järgmise marsruut.

Kui rakendate ümbersuunamiste töötlemist ise, kasutage URI-viite lahendamist punktisegmentide töötlemisega. Säilitage tegeliku olekukoodi meetodireeglid ja kehtestage ümbersuunamise piir. Locationi lisamine hostinimele ei asenda seda lahendusalgoritmi.

Kui ümbersuunamine ebaõnnestub, säilitage taotletud URL, vastuse olek, Locationi väärtus ja lahendatud järgmine URL. Need neli väärtust näitavad tavaliselt, kas viga kuulub URL-i koostamisse või pärast seda proovitud ühendusse.

Seotud artiklid