URL sťahovania je správna, ale zdieľaná proxy má stále uloženú odpoveď. Ak operácia potrebuje odpoveď overenú u pôvodcu, vložte túto požiadavku do requestu:

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)

Tento fragment predpokladá, že aplikácia vlastní binárny výstupný prúd a dodáva HTTPS download_url. Ak chcete vyskúšať povolené verejné sťahovanie bez autentifikácie proxy, použite v openeri kandidáta na HTTP koncový bod z zoznamu HTTP proxy; požiadavka na cache zostáva rovnaká. Zachováva pôvodnú URL zdroja a zároveň žiada cache na ceste requestu, aby pred opätovným použitím overili.

Overenie môže znova použiť uložené bajty

Vyhovujúca cache, ktorá dostane no-cache, nemôže splniť tento request z uloženej odpovede bez úspešného overenia u pôvodcu. Pôvodca môže potvrdiť, že uložená reprezentácia zostáva platná, takže operácia nemusí znova prenášať nezmenený súbor od pôvodcu.

max-age=0 v requeste vyjadruje limit veku. Je užitočné, keď aplikácia chce odpoveď nie staršiu ako tento limit, ale nie je to zákaz ukladania. Odpoveď, ktorá práve vznikla, ho môže splniť.

Pridanie náhodného parametra dotazu žiada iné cieľové URI. To môže vytvoriť ďalší záznam v cache alebo dokonca zmeniť odpoveď aplikácie. Parameter dotazu používajte len vtedy, ak je súčasťou zamýšľaného rozhrania zdroja.

Pri bežnom HTTPS CONNECT tunelová proxy nevidí túto hlavičku vnútri TLS. Zásada sa napriek tomu môže dostať k pôvodcovi a k cache, ktoré obsluhujú dešifrovanú HTTP výmenu. Skôr než uloženú odpoveď pripíšete tunelu, overte, kde skutočne sídli.

Súvisiace články