Atkārtoti validēt lejupielādi caur starpniekserveri ar Cache-Control: no-cache
Pieprasiet validētu atbildi, nemainot lejupielādes URL un nejaujot atkārtotu validāciju sajaukt ar glabāšanas aizliegumu.
Lejupielādes URL ir pareizs, bet koplietotajam starpniekserverim joprojām ir saglabāta atbilde. Ja darbībai nepieciešama ar izcelsmi validēta atbilde, uzlieciet šo prasību pieprasījumam:
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)
Šis fragments pieņem, ka lietojumprogrammai ir bināra izvades plūsma un tā nodrošina HTTPS download_url. Lai izmēģinātu atļautu publisku lejupielādi bez starpniekservera autentifikācijas, openerī izmantojiet HTTP galapunkta kandidātu no HTTP starpniekserveru saraksta; pieprasījuma kešatmiņas prasība paliek tāda pati. Tas saglabā resursa sākotnējo URL un vienlaikus lūdz kešatmiņas pieprasījuma ceļā validēt pirms atkārtotas izmantošanas.
Validācija var atkārtoti izmantot saglabātos baitus
Atbilstoša kešatmiņa, kas saņem no-cache, nevar izpildīt šo pieprasījumu no saglabātas atbildes bez veiksmīgas validācijas ar izcelsmi. Izcelsme var apstiprināt, ka saglabātais attēlojums joprojām ir derīgs, tāpēc darbībai nav jāpārsūta nemainīta faila no izcelsmes.
Pieprasījuma max-age=0 izsaka vecuma ierobežojumu. Tas ir noderīgs, ja lietojumprogramma vēlas atbildi, kas nav vecāka par šo ierobežojumu, bet tas nav glabāšanas aizliegums. Tikko ģenerēta atbilde var to izpildīt.
Nejauša vaicājuma parametra pievienošana pieprasa citu mērķa URI. Tas var radīt citu kešatmiņas ierakstu vai pat mainīt lietojumprogrammas atbildi. Izmantojiet vaicājuma parametru tikai tad, ja tas ir daļa no resursa paredzētās saskarnes.
Parastam HTTPS CONNECT tuneļa starpniekserveris nevar redzēt šo galveni TLS iekšpusē. Politika tomēr var sasniegt izcelsmi un kešatmiņas, kas apstrādā atšifrēto HTTP apmaiņu. Pārbaudiet, kur saglabātā atbilde patiešām atrodas, pirms attiecināt to uz tuneli.