URL stahování je správná, ale sdílená proxy má stále uloženou odpověď. Pokud operace potřebuje odpověď ověřenou u původce, vložte tento požadavek 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 předpokládá, že aplikace vlastní binární výstupní proud a dodává HTTPS download_url. Chcete-li vyzkoušet povolené veřejné stahování bez autentizace proxy, použijte v openeru kandidáta na HTTP koncový bod z seznamu HTTP proxy; požadavek na cache zůstává stejný. Zachovává původní URL zdroje a zároveň žádá cache na cestě requestu, aby před opětovným použitím ověřily.

Ověření může znovu použít uložené bajty

Vyhovující cache, která obdrží no-cache, nemůže tento request splnit z uložené odpovědi bez úspěšného ověření u původce. Původce může potvrdit, že uložená reprezentace zůstává platná, takže operace nemusí znovu přenášet nezměněný soubor od původce.

max-age=0 v requestu vyjadřuje limit stáří. Je užitečné, když aplikace chce odpověď ne starší než tento limit, ale není to zákaz ukládání. Odpověď, která právě vznikla, jej může splnit.

Přidání náhodného parametru dotazu žádá jiné cílové URI. To může vytvořit další záznam v cache nebo dokonce změnit odpověď aplikace. Parametr dotazu používejte jen tehdy, je-li součástí zamýšleného rozhraní zdroje.

U běžného HTTPS CONNECT tunelová proxy nevidí tuto hlavičku uvnitř TLS. Zásada se přesto může dostat k původci a k cache, které obsluhují dešifrovanou HTTP výměnu. Než uloženou odpověď přisoudíte tunelu, ověřte, kde skutečně sídlí.

Související články