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.

Articole similare