Վստահված սերվերի միջով ստացված պատասխանը կարող է վերադարձնել հարաբերական Location:

Location: ../new/

Ժամանակակից HTTP-ն այստեղ թույլատրում է URI հղում։ Լուծեք այն պատասխանը ստեղծած URL-ի նկատմամբ։ Եթե այդ URL-ը https://docs.example/catalog/old/ էր, վերը նշված հղումը նշում է https://docs.example/catalog/new/։ Վստահված սերվերի հոսթի անունը հիմք չէ։

Սովորական Python urllib հարցումների համար օգտագործեք դրա վերահասցեավորման մշակիչը՝ վստահված սերվերի վերջնակետի շուրջ տողեր միացնելու փոխարեն:

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

Առանց վստահված սերվերի նույնականացման այս հանրային փաստաթղթի հարցման համար HTTP վստահված սերվերի ցանկից HTTP թեկնածուն կարող է փոխարինել օրինակի վերջնակետը, երբ ուղին թույլատրված է։ Դասերը գալիս են urllib.request-ից։ Դրա սովորական մշակիչը հետևում է աջակցվող վերահասցեավորումներին իր սահմաններում։ final_url-ը նկարագրում է ռեսուրսի վերջնական URL-ը, ոչ թե դրան հասնելու համար օգտագործված միջնորդին։

Նախ լուծեք, ապա ընտրեք հաջորդ ուղին

Վերահասցեավորումը կարող է փոխել նպատակային հոսթը կամ սխեման։ Ուստի նպատակի վրա հիմնված վստահված սերվերի քաղաքականությունը պետք է գնահատի նաև այդ նոր URL-ը։ Առաջին հոսթի համար աշխատած ուղին կարող է հաջորդի ուղին չլինել։

Երբ ինքներդ եք իրականացնում վերահասցեավորման մշակումը, օգտագործեք URI հղման լուծում՝ կետային հատվածների մշակմամբ։ Պահպանեք փաստացի կարգավիճակի կոդի մեթոդի կանոնները և սահմանեք վերահասցեավորման սահմանափակում։ Location-ը հոսթի անվանը կցելը այդ լուծման ալգորիթմի փոխարինող չէ։

Եթե վերահասցեավորումը ձախողվի, պահեք պահանջված URL-ը, պատասխանի կարգավիճակը, Location արժեքը և լուծված հաջորդ URL-ը։ Այս չորս արժեքները սովորաբար ցույց են տալիս՝ արդյոք ձախողումը պատկանում է URL-ի կառուցմանը, թե դրանից հետո փորձված կապին։

Առնչվող հոդվածներ