Nedlastings-URL-en er rett, men ein delt proxy har framleis eit lagra svar. Viss operasjonen treng eit svar som er validert mot opphavet, legg det kravet på førespurnaden:

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)

Dette utdraget føreset at applikasjonen eig ein binær utstraum og leverer ein HTTPS download_url. For å prøve ei tillaten offentleg nedlasting utan proxy-autentisering, bruk ein HTTP-endepunktkandidat frå HTTP-proxylista i openeren; cache-kravet til førespurnaden blir det same. Det held på den opphavlege URL-en til ressursen medan det ber cache-lag på førespurnadsstien validere før gjenbruk.

Validering kan bruke dei lagra byta om att

Ein samsvarande cache som tek imot no-cache kan ikkje oppfylle denne førespurnaden frå eit lagra svar utan vellykka validering mot opphavet. Opphavet kan stadfeste at den lagra representasjonen framleis er gyldig, så operasjonen treng ikkje sende ei uendra fil på nytt frå opphavet.

Ein førespurnads max-age=0 uttrykkjer ei aldersgrense. Det er nyttig når applikasjonen vil ha eit svar som ikkje er eldre enn den grensa, men det er ikkje eit forbod mot lagring. Eit svar som nettopp er generert, kan oppfylle det.

Å leggje til ein tilfeldig spørjeparameter ber om ein annan mål-URI. Det kan gje ein ny cache-oppføring eller jamvel endre svaret til applikasjonen. Bruk ein spørjeparameter berre når han er ein del av det tiltenkte grensesnittet til ressursen.

For vanleg HTTPS CONNECT kan tunnelproxien ikkje sjå denne headeren inne i TLS. Politikken kan likevel nå opphavet og dei cachelaga som handterer den dekrypterte HTTP-utvekslinga. Sjekk kvar det lagra svaret faktisk ligg før du legg det til tunnelen.

Relaterte artiklar