O URL da descarga é correcto, pero un proxy compartido aínda ten unha resposta almacenada. Se a operación precisa unha resposta validada coa orixe, poña ese requisito na solicitude:

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)

Este fragmento supón que a aplicación posúe un fluxo de saída binario e fornece un download_url HTTPS. Para probar unha descarga pública permitida sen autenticación de proxy, use un candidato de punto final HTTP da lista de proxies HTTP no opener; o requisito de caché da solicitude segue igual. Conserva o URL orixinal do recurso mentres pide ás cachés da ruta da solicitude que validen antes de reutilizar.

A validación pode reutilizar os bytes almacenados

Unha caché conforme que reciba no-cache non pode satisfacer esta solicitude a partir dunha resposta almacenada sen unha validación correcta coa orixe. A orixe pode confirmar que a representación almacenada segue sendo válida, así que a operación non precisa retransmitir un ficheiro sen cambios desde a orixe.

O max-age=0 dunha solicitude expresa un límite de antigüidade. É útil cando a aplicación quere unha resposta que non supere ese límite, pero non é unha prohibición de almacenamento. Unha resposta acabada de xerar pode cumprila.

Engadir un parámetro de consulta aleatorio pide un URI de destino distinto. Iso pode producir outra entrada de caché ou mesmo cambiar a resposta da aplicación. Use un parámetro de consulta só cando forme parte da interface prevista do recurso.

Para un HTTPS CONNECT normal, o proxy de túnel non pode ver esta cabeceira dentro de TLS. A política aínda pode chegar á orixe e ás cachés que manexan o intercambio HTTP descifrado. Comprobe onde vive realmente a resposta almacenada antes de atribuíla ao túnel.

Artigos relacionados