Revalidează o descărcare prin proxy cu Cache-Control: no-cache
Solicită un răspuns validat fără a schimba URL-ul descărcării și fără a confunda revalidarea cu o interdicție de stocare.
URL-ul descărcării este corect, dar un proxy partajat are încă un răspuns stocat. Dacă operația are nevoie de un răspuns validat la origine, pune această cerință pe solicitare:
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)
Acest fragment presupune că aplicația deține un flux de ieșire binar și furnizează un download_url HTTPS. Pentru a încerca o descărcare publică permisă fără autentificare proxy, folosește un candidat de punct final HTTP din lista de proxy HTTP în opener; cerința de cache a solicitării rămâne aceeași. Păstrează URL-ul original al resursei și, în același timp, cere cache-urilor de pe calea solicitării să valideze înainte de reutilizare.
Validarea poate reutiliza octeții stocați
Un cache conform care primește no-cache nu poate satisface această solicitare dintr-un răspuns stocat fără o validare reușită la origine. Originea poate confirma că reprezentarea stocată rămâne validă, așa că operația nu trebuie să retransmită un fișier neschimbat de la origine.
max-age=0 într-o solicitare exprimă o limită de vechime. Este util când aplicația vrea un răspuns care nu este mai vechi decât acea limită, dar nu este o interdicție de stocare. Un răspuns tocmai generat o poate îndeplini.
Adăugarea unui parametru de interogare aleatoriu cere un alt URI țintă. Aceasta poate produce o altă intrare de cache sau chiar poate schimba răspunsul aplicației. Folosește un parametru de interogare doar când face parte din interfața prevăzută a resursei.
Pentru HTTPS CONNECT obișnuit, proxy-ul de tunel nu poate vedea acest antet în interiorul TLS. Politica poate ajunge totuși la origine și la cache-urile care gestionează schimbul HTTP decriptat. Verifică unde se află de fapt răspunsul stocat înainte de a-l atribui tunelului.