Atsisiuntimo URL teisingas, bet bendrinis tarpinis serveris vis dar turi išsaugotą atsakymą. Jei operacijai reikia su šaltiniu patvirtinto atsakymo, uždėkite šį reikalavimą užklausai:

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 fragmentas daro prielaidą, kad programa turi dvejetainį išvesties srautą ir pateikia HTTPS download_url. Norėdami išbandyti leidžiamą viešą atsisiuntimą be tarpinio serverio autentifikavimo, openeryje naudokite HTTP galinio taško kandidatą iš HTTP tarpinių serverių sąrašo; užklausos podėlio reikalavimas lieka toks pat. Jis išlaiko pradinį ištekliaus URL ir tuo pačiu prašo podėlių užklausos kelyje patvirtinti prieš pakartotinį naudojimą.

Patvirtinimas gali pakartotinai naudoti išsaugotus baitus

Atitinkantis podėlis, gavęs no-cache, negali įvykdyti šios užklausos iš išsaugoto atsakymo be sėkmingo patvirtinimo su šaltiniu. Šaltinis gali patvirtinti, kad išsaugota reprezentacija vis dar galioja, todėl operacijai nereikia iš naujo siųsti nepakeisto failo iš šaltinio.

Užklausos max-age=0 išreiškia amžiaus ribą. Tai naudinga, kai programa nori atsakymo, ne senesnio už šią ribą, bet tai nėra saugojimo draudimas. Ką tik sukurtas atsakymas gali jį patenkinti.

Atsitiktinio užklausos parametro pridėjimas prašo kito tikslinio URI. Tai gali sukurti kitą podėlio įrašą ar net pakeisti programos atsakymą. Naudokite užklausos parametrą tik tada, kai jis yra numatytos ištekliaus sąsajos dalis.

Įprastam HTTPS CONNECT tunelinis tarpinis serveris negali matyti šios antraštės TLS viduje. Politika vis tiek gali pasiekti šaltinį ir podėlius, kurie tvarko iššifruotą HTTP mainus. Patikrinkite, kur išsaugotas atsakymas iš tikrųjų yra, prieš priskirdami jį tuneliui.

Susiję straipsniai