Latauksen URL-osoite on oikein, mutta jaetulla välityspalvelimella on yhä tallennettu vastaus. Jos toiminto tarvitsee alkuperän kanssa validoidun vastauksen, aseta tämä vaatimus pyyntöön:

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)

Tämä katkelma olettaa, että sovellus omistaa binäärin tulostusvirran ja tarjoaa HTTPS download_urlin. Voit kokeilla sallittua julkista latausta ilman välityspalvelimen todennusta käyttämällä openerissa HTTP-päätepisteen ehdokasta HTTP-välityspalvelinluettelosta; pyynnön välimuistivaatimus pysyy samana. Se säilyttää alkuperäisen resurssin URL-osoitteen ja pyytää samalla pyyntöpolun välimuisteja validoimaan ennen uudelleenkäyttöä.

Validointi voi käyttää tallennetut tavut uudelleen

no-cache-otsakkeen saava vaatimustenmukainen välimuisti ei voi täyttää tätä pyyntöä tallennetusta vastauksesta ilman onnistunutta validointia alkuperän kanssa. Alkuperä voi vahvistaa, että tallennettu esitys on edelleen kelvollinen, joten toiminnon ei tarvitse lähettää muuttumatonta tiedostoa uudelleen alkuperästä.

Pyynnön max-age=0 ilmaisee ikärajan. Se on hyödyllinen, kun sovellus haluaa vastauksen, joka ei ole tätä rajaa vanhempi, mutta se ei ole tallennuskielto. Juuri luotu vastaus voi täyttää sen.

Satunnaisen kyselyparametrin lisääminen pyytää eri kohde-URIa. Se voi tuottaa toisen välimuistimerkinnän tai jopa muuttaa sovelluksen vastausta. Käytä kyselyparametria vain, kun se on osa resurssin tarkoitettua rajapintaa.

Tavallisessa HTTPS CONNECT -yhteydessä tunnelointivälityspalvelin ei näe tätä otsaketta TLS:n sisällä. Käytäntö voi silti tavoittaa alkuperän ja ne välimuistit, jotka käsittelevät puretun HTTP-vaihdon. Tarkista, missä tallennettu vastaus todella sijaitsee, ennen kuin liität sen tunneliin.

Aiheeseen liittyvät artikkelit