Ponovno validirajte preuzimanje preko proxyja s Cache-Control: no-cache
Zatražite validiran odgovor bez promjene URL-a za preuzimanje i bez miješanja revalidacije sa zabranom pohrane.
URL za preuzimanje je ispravan, ali zajednički proxy još uvijek ima pohranjen odgovor. Ako operacija treba odgovor validiran kod izvora, stavite taj zahtjev na sam zahtjev:
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)
Ovaj isječak pretpostavlja da aplikacija posjeduje binarni izlazni tok i pruža HTTPS download_url. Da biste isprobali dopušteno javno preuzimanje bez proxy autentifikacije, upotrijebite kandidata za HTTP krajnju točku s popisa HTTP proxyja u openeru; zahtjev za keš ostaje isti. On čuva izvorni URL resursa dok traži od keševa na putu zahtjeva da validiraju prije ponovne upotrebe.
Validacija može ponovo iskoristiti pohranjene bajtove
Sukladan keš koji primi no-cache ne može zadovoljiti ovaj zahtjev iz pohranjenog odgovora bez uspješne validacije kod izvora. Izvor može potvrditi da pohranjena reprezentacija ostaje valjana, pa operacija ne mora ponovno prenijeti nepromijenjenu datoteku s izvora.
max-age=0 u zahtjevu izražava ograničenje starosti. Korisno je kada aplikacija želi odgovor koji nije stariji od tog ograničenja, ali nije zabrana pohrane. Odgovor koji je upravo generiran može ga zadovoljiti.
Dodavanje slučajnog parametra upita traži drugi ciljni URI. To može stvoriti još jedan keš zapis ili čak promijeniti odgovor aplikacije. Parametar upita koristite samo kada je dio predviđenog sučelja resursa.
Za obični HTTPS CONNECT, tunelski proxy ne može vidjeti ovo zaglavlje unutar TLS-a. Pravilo ipak može doći do izvora i keševa koji obrađuju dešifriranu HTTP razmjenu. Provjerite gdje pohranjeni odgovor zapravo živi prije nego što ga pripišete tunelu.