Validera en nedladdning via en proxy igen med Cache-Control: no-cache
Begär ett validerat svar utan att ändra nedladdningsadressen och utan att blanda ihop omvalidering med ett förbud mot lagring.
Nedladdningsadressen är korrekt, men en delad proxy har fortfarande ett lagrat svar. Om åtgärden behöver ett svar som validerats mot ursprunget, lägg det kravet på begäran:
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)
Det här utdraget förutsätter att programmet äger en binär utström och levererar en HTTPS download_url. För att prova en tillåten offentlig nedladdning utan proxyautentisering kan du använda en HTTP-slutpunktskandidat från HTTP-proxylistan i openern; begärans cachekrav är oförändrat. Det behåller resursens ursprungliga adress och ber samtidigt cacheminnena på begärans väg att validera före återanvändning.
Validering kan återanvända de lagrade byten
Ett överensstämmande cache som tar emot no-cache kan inte uppfylla den här begäran från ett lagrat svar utan lyckad validering mot ursprunget. Ursprunget kan bekräfta att den lagrade representationen fortfarande är giltig, så åtgärden behöver inte skicka en oförändrad fil på nytt från ursprunget.
En begärans max-age=0 uttrycker en åldersgräns. Det är användbart när programmet vill ha ett svar som inte är äldre än den gränsen, men det är inte ett förbud mot lagring. Ett svar som just skapats kan uppfylla det.
Att lägga till en slumpmässig frågeparameter begär en annan mål-URI. Det kan ge en ny cachepost eller till och med ändra programmets svar. Använd en frågeparameter bara när den är en del av resursens avsedda gränssnitt.
För vanlig HTTPS CONNECT kan tunnelproxyn inte se den här headern inne i TLS. Policyn kan ändå nå ursprunget och de cacheminnen som hanterar det dekrypterade HTTP-utbytet. Kontrollera var det lagrade svaret faktiskt finns innan du tillskriver det tunneln.