Пераправерыць загрузку праз проксі з Cache-Control: no-cache
Запытайце правераны адказ без змены URL загрузкі і не блытайце пераправерку з забаронай захоўвання.
URL загрузкі правільны, але агульны проксі ўсё яшчэ мае захаваны адказ. Калі аперацыі патрэбны адказ, правераны з крыніцай, дадайце гэтую патрабаванне да запыту:
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)
Гэты фрагмент мяркуе, што праграма валодае бінарным патокам вываду і падае HTTPS download_url. Каб паспрабаваць дазволеную публічную загрузку без аўтэнтыфікацыі проксі, выкарыстайце кандыдат HTTP-канчатковай кропкі са спісу HTTP-проксі у opener; патрабаванне да кэша запыту застаецца тым жа. Ён захоўвае зыходны URL рэсурсу, але просіць кэшы на шляху запыту праверыць перад паўторным выкарыстаннем.
Пераправерка можа паўторна выкарыстаць захаваныя байты
Адпаведны кэш, які атрымаў no-cache, не можа задаволіць гэты запыт з захаванага адказу без паспяховай праверкі з крыніцай. Крыніца можа пацвердзіць, што захаванае прадстаўленне застаецца сапраўдным, таму аперацыя не павінна паўторна перадаваць нязменены файл з крыніцы.
max-age=0 у запыце выяўляе абмежаванне ўзросту. Гэта карысна, калі праграма хоча адказ не старэйшы за гэтае абмежаванне, але гэта не забарона на захоўванне. Адказ, які толькі што створаны, можа яго задаволіць.
Даданне выпадковага параметра запыту патрабуе іншага мэтавага URI. Гэта можа стварыць іншы запіс кэша або нават змяніць адказ праграмы. Выкарыстоўвайце параметр запыту толькі тады, калі ён з'яўляецца часткай прызначанага інтэрфейсу рэсурсу.
Для звычайнага HTTPS CONNECT туранельны проксі не бачыць гэты загаловак унутры TLS. Палітыка ўсё ж можа дасягнуць крыніцы і кэшаў, якія апрацоўваюць расшыфраваны абмен HTTP. Праверце, дзе насамрэч жыве захаваны адказ, перш чым прыпісваць яго тунелю.