Ներբեռնման URL-ը ճիշտ է, բայց ընդհանուր պրոքսին դեռ ունի պահված պատասխան։ Եթե գործողությանը պետք է բնօրինակի հետ վավերացված պատասխան, դրեք այդ պահանջը հարցման վրա՝

from urllib.request import ProxyHandler, Request, build_opener
import shutil

opener = build_opener(ProxyHandler({
    "https": "http://proxy.example:8080",
}))
request = Request(download_url, headers={"Cache-Control": "no-cache"})
with opener.open(request, timeout=15) as response:
    shutil.copyfileobj(response, output)

Այս հատվածը ենթադրում է, որ հավելվածն ունի երկուական ելքային հոսք և տրամադրում է HTTPS download_url։ Առանց պրոքսի նույնականացման թույլատրված հանրային ներբեռնում փորձելու համար opener-ում օգտագործեք HTTP վերջնակետի թեկնածու HTTP պրոքսիների ցանկից; հարցման քեշի պահանջը մնում է նույնը։ Այն պահպանում է ռեսուրսի սկզբնական URL-ը՝ միաժամանակ խնդրելով հարցման ուղու քեշերին վավերացնել մինչև վերօգտագործումը։

Վավերացումը կարող է վերօգտագործել պահված բայթերը

no-cache ստացած համապատասխան քեշը չի կարող բավարարել այս հարցումը պահված պատասխանից առանց բնօրինակի հետ հաջող վավերացման։ Բնօրինակը կարող է հաստատել, որ պահված ներկայացումը դեռ վավեր է, ուստի գործողությանը պետք չէ կրկին ուղարկել անփոփոխ ֆայլը բնօրինակից։

Հարցման max-age=0-ը արտահայտում է տարիքային սահման։ Այն օգտակար է, երբ հավելվածն ուզում է պատասխան, որը այդ սահմանից հին չէ, բայց դա պահման արգելք չէ։ Հենց նոր ստեղծված պատասխանը կարող է բավարարել այն։

Պատահական հարցում-պարամետր ավելացնելը պահանջում է այլ թիրախ URI։ Դա կարող է ստեղծել մեկ այլ քեշ-գրառում կամ նույնիսկ փոխել հավելվածի պատասխանը։ Օգտագործեք հարցում-պարամետր միայն այն դեպքում, երբ այն ռեսուրսի նախատեսված ինտերֆեյսի մասն է։

Սովորական HTTPS CONNECT-ի դեպքում թունելային պրոքսին չի կարող տեսնել այս վերնագիրը TLS-ի ներսում։ Քաղաքականությունը այնուամենայնիվ կարող է հասնել բնօրինակին և ապակոդավորված HTTP փոխանակումը սպասարկող քեշերին։ Ստուգեք, թե որտեղ է իրականում գտնվում պահված պատասխանը, նախքան այն թունելին վերագրելը։

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