Повторно валидиране на изтегляне през прокси с 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 обмен. Проверете къде всъщност живее запазеният отговор, преди да го припишете на тунела.